【发布时间】:2019-08-19 10:42:44
【问题描述】:
我正在尝试使用 pheanstalk 设置 BeanStalkD 客户端。
我可以执行某些操作,例如 listTubes()。
当我尝试从 beanstalkd 队列中保留作业时,我收到以下错误:
PHP 致命错误:未捕获的 Pheanstalk\Exception\SocketException:C:\SmartParking\vendo 中的未知错误 r\pda\pheanstalk\src\Socket\FileSocket.php:49 堆栈跟踪: #0 C:\SmartParking\vendor\pda\pheanstalk\src\Socket\FileSocket.php(91): Pheanstalk\Socket\FileSocket->t 异常() #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->reserve() #5 {主要} 在第 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);
}
【问题讨论】:
-
一点帮助调查:在 pheanstalk/FileSocket.php 中,
fgets($this->socket, 8192);解析为 false,然后抛出“未知错误” -
谢谢,这真的帮助了我。我查看了这段代码,然后意识到我的 PHP.ini 中没有启用套接字扩展。我现在觉得自己像个真正的白痴。我在这个问题上浪费了 2 个小时 :)
-
您可以为自己的问题写一个答案,并详细说明解决该问题的方法。可以帮助未来的访客。
标签: php beanstalkd pheanstalk