我正在尝试使用pheanstalk建立BeanStalkD客户端。
我可以执行某些操作,例如listTubes()。
当我尝试从beanstalkd队列中保留作业时,我收到以下错误:
PHP致命错误:未捕获Pheanstalk \ Exception \ SocketException:C:\ SmartParking \ vendo r \ pda \ pheanstalk \ src \ Socket \ FileSocket.php中的未知错误:堆栈跟踪:#0 C:\ SmartParking \ vendor \ pda \ pheanstalk \ src \ Socket \ FileSocket.php(91):Pheanstalk \ Socket \ FileSocket-> t hrowException()#1 C:\ SmartParking \ vendor \ pda \ pheanstalk \ src \ Connection.php(84):Pheanstalk \ Socket \ FileSocket - > getLine()#2 C:\ SmartParking \ vendor \ pda \ pheanstalk \ src \ Pheanstalk.php(372):Pheanstalk \ Connection-> dispatchComman d(对象(Pheanstalk \ Command \ ReserveCommand))#3 C:\ SmartParking \ vendor \ pda \ pheanstalk \ src \ Pheanstalk.php(255):Pheanstalk \ Pheanstalk-> dispatch(Objec t(Pheanstalk \ Command \ ReserveCommand))#4 C:\ SmartParking \ SecondAttempt.php(22):Pheanstalk \ Pheanstalk - >保留()#5 {main}在第49行的C:\ SmartParking \ vendor \ pda \ pheanstalk \ src \ Socket \ FileSocket.php中抛出
我该怎么做才能解决这个问题?
我试过了:
各种版本的PHP,各种版本的pheanstalk,重启包括BeanStalkD服务器本身在内的一切。
这一切都在Windows Server 2016品牌上运行,PHP仅用作命令行之外的脚本引擎。
我目前使用的是PHP 7.2版。
// Hopefully you're using Composer autoloading.
require('vendor/autoload.php');
use Pheanstalk\Pheanstalk;
// Create using autodetection of socket implementation
$pheanstalk = Pheanstalk::create('127.0.0.1');
var_dump($pheanstalk->listTubes());
while(true){
$job = $pheanstalk
->watch('alpr-alt')
->reserve();
echo json_decode($job->getData(), true);
}
我的PHP.ini
没有启用套接字
所以我改变了:
;extension=sockets
至
extension=sockets
如果您使用PHP作为Web服务器的一部分,则此时必须重新启动它。
这解决了我的问题。