PHP 스크립트를 통해 beanstalkd 서버에 연결하고 기존 대기열에서 작업을 예약하려고합니다. 내가 작업이 가능하지 않은 경우, 중지 스크립트를 기대는 데몬의 응답을 얻을 수는 fgets() 함수를 사용하고, 여기에 샘플 코드입니다 :PHP fgets() (또는 fread())가 차단되지 않습니다.
set_time_limit(0);
$connection = fsockopen('localhost', 11300);
fwrite($connection, "reserve\r\n");
stream_set_blocking($connection, TRUE);
fgets($connection);
당신은 내가 강제로 시도하고 볼 수 있듯이 fgets() 함수가 블로킹되어 있고 max_execution_time을 0으로 설정하고있다. (아무런 의미가 없다.) 그러나 잠시 후 (2mins) 스크립트는 에러없이 리턴한다. telnet을 통해 예약 명령을 실행하려했으나 exepcted로 중단됩니다. fread()도 사용하려고했지만 같은 행동을합니다.
해결 방법에 대한 제안이 있으십니까?
그래, 해결책이 될 것이지만, 스크립트를 죽지 않고 올바른 시간을 기다릴 필요없이 완전한 비 차단 방법이 있는지 알고 싶습니다. 이것이 일종의 버그인지 궁금합니다. –