beanstalkd와 함께 작업을 예약 할 수 없습니다 (소스에서 컴파일 된에서라도에 로컬 및 냠가 설치된 CentOS는 서버)I가 실행 beanstalkd 얻고 몇 가지 테스트를 수행하는 두 개의 서로 다른 서버에 시도
I 하나
sudo beanstalkd -d -p 11300
또는
sudo beanstalkd -p 11300 &
와 나는 다음의 PHP lib 디렉토리를 사용하여 시도 실행하는 서버를 얻고 그것은 단지 동결 할 수 있습니다. 직접 연결 : I이 (가) PHP 테스트 스크립트를 모방하기 위해 다음을 수행
telnet localhost 11300
:
use foo
USING foo
put 0 0 120 5
hello
INSERTED 1
reserve-with-timeout 0
TIMED_OUT
난 그냥 그것은 무기한 붙어
reserve
실행하는 경우.
PHP 코드는
/**
* BeanStalk 0.10 - Example code
*
* This is a quick example to get you started using the client.
*/
require(dirname(__FILE__).'/../src/BeanStalk.class.php');
/**
* Connect to the beanstalkd server(s)
*
* Option array:
*
* array(
* 'servers' => array('ip:port'[, 'ip:port'[, ...]]),
* 'select' => 'random wait',
* 'connection_timeout' => 0.5,
* 'peek_usleep' => 2500,
* 'connection_retries' => 3,
* 'auto_unyaml' => true
* );
*
* select -> this tells the client what type of blocking to use when selecting from
* different servers. There are currently four choices:
*
* random wait: pick a random server from the list and wait for a job
*
* sequential wait: pick the next server in the list and wait for a job
*
* random peek: in a loop, pick a random server and peek-ready(), looking for a job
* until a server is found that has something available.
*
* sequential peek: in a loop, pick the next server and peek-ready() ... etc.
*
* the *peek modes have a companion setting, peek_usleep, which tells the client how long
* to usleep() for between peeks to servers.
*
* auto_unyaml -> if true, this causes the client to assume the presence of the syck yaml
* parser, and attempts to 'unyamlize' yaml output for you before returning it.
*/
echo "opening\n";
$beanstalk = BeanStalk::open(array(
'servers' => array('127.0.0.1:11300'),
'select' => 'random peek'
));
echo "switching tube\n";
// As in the protocol doc.
$beanstalk->use_tube('foo');
echo "putting job\n";
// As in the protocol doc.
$beanstalk->put(0, 0, 120, 'say hello world'); // Add a job to the queue with highest priority,
// no delay, 120 seconds TTR, with the contents
// 'say hello world'.
// NOTE: the put() method here supports a final optional
// argument, a tube name. If supplied, the server will
// first switch to that tube, write the job, then switch
// back to the old tube again.
echo "trying to reserve\n";
// As in the protocol doc.
$job = $beanstalk->reserve(); // Assuming there was nothing in the queue before
// we started, this will give us our 'hello world'
// job back.
echo "about to output\n";
// This is a BeanQueueJob object.
echo $job->get(); // Output: 'say hello world'
Beanstalk::delete($job); // Delete the job.
하고 그냥 "예약하려고"에 정지.
http://sourceforge.net/projects/beanstalk/
어떤 아이디어 :에서 원본 코드? 미리 감사드립니다.
문제가있는 PHP 코드를 추가 할 수 있습니까? 또한 데몬의 버전 ('beanstalkd -v'). 항상 데몬으로 실행하지 않아도됩니다. 터미널 창에서 전방에 행복하게 사이트를 게시합니다. –
버전 1.4.4의 경우 위의 PHP 코드를 추가했습니다. 팁을 주셔서 감사 드리며 -d로 실행하지 마십시오. 동일한 문제가 적용되지만 무한 루프를 죽이는 시간을 절약 할 수 있습니다. –
위의 텔넷 명령을 사용할 때 list-tubes 명령이 "foo"목록을 표시하지만 새 튜브를 사용하지 않을 때 예약 할 수 있습니다. 그래서 설정이나 설정에서 별도의 튜브가 작동하는 것을 막을 수 있습니다. –