PHP fgets () (veya fread ()) bloke etmez

3 Cevap php

I'm trying to connect to a beanstalkd server through a PHP script and to reserve jobs from an existing queue. I'm using the fgets() function to get responses from the deamon, expecting the script to hang unless a job is available, here's a sample code:

set_time_limit(0);
$connection = fsockopen('localhost', 11300);
fwrite($connection, "reserve\r\n");
stream_set_blocking($connection, TRUE);
fgets($connection);

As you can see I'm trying to force the fgets() function to be blocking and I'm setting the max_execution_time to 0 (meaning no limit), but after a while (2mins) the script returns without errors. I've tried to run the reserve command via telnet and it hangs as exepcted. I also tried to use fread() but I get the same behviour.

Bunu çözmek konusunda herhangi bir öneri?

3 Cevap

Php.ini de değerini ayarlamak ettiniz mi? Siz) (phpinfo yoluyla kendi doğru değerini teyit ettiniz mi? Eğer programlı olarak ayarlarsanız, o zaman, cf çalışmaz. http://us.php.net/manual/en/function.set-time-limit.php:

Bu işlev, PHP güvenli modda çalışan hiçbir etkisi yoktur. Güvenli modunu kapatmak veya php.ini içinde zaman sınırı dışında değişen hiçbir çözüm yoktur.

Bu cini 2 dakika sonra çizgi karakterin bir son verir mümkün. Eğer boş bir dize ve döngü için geri kontrol etmek için denediniz mi?