如何修复“ PHP致命错误:未捕获的Pheanstalk \ Exception \ SocketException:未知错误”

时间:2019-03-28 15:27:06

标签: php beanstalkd pheanstalk

我正在尝试使用pheanstalk设置BeanStalkD客户端。

我可以执行某些操作,例如listTubes()。

当我尝试从beantalkd队列中保留作业时,出现以下错误:

  

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       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(听筒\命令\储备命令))       #4 C:\ SmartParking \ SecondAttempt.php(22):Pheanstalk \ Pheanstalk-> reserve()       #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);
}

1 个答案:

答案 0 :(得分:0)

我的PHP.ini中没有启用套接字

所以我改变了:

;extension=sockets

extension=sockets

如果您将PHP用作Web服务器的一部分,则此时必须重新启动它。

这解决了我的问题。