Как исправить ‘Фатальную ошибку PHP: неперехваченный Pheanstalk Exception SocketException: неизвестная ошибка’

#php #beanstalkd #pheanstalk

#php #beanstalkd #pheanstalk

Вопрос:

Я пытаюсь настроить клиент BeanStalkD, используя pheanstalk.

Я могу выполнять определенные операции, такие как listTubes().

Когда я пытаюсь зарезервировать задание из очереди beanstalkd, я получаю следующую ошибку:

PHP Фатальная ошибка: неперехваченный Pheanstalk Exception SocketException: неизвестная ошибка в C:SmartParkingvendo r pda pheanstalk src Socket FileSocket.php:49 Трассировка стека: #0 C:SmartParkingvendorpdapheanstalksrcSocketFileSocket.php (91): Pheanstalk Socket FileSocket-> t HROW Exception() #1 C:SmartParkingvendorpdapheanstalksrcConnection.php (84): Pheanstalk Socket FileSocket->getLine( ) #2 C:SmartParkingvendorpdapheanstalksrcPheanstalk.php (372): Pheanstalk Connection-> dispatchComman d(Объект (PheanstalkCommand ReserveCommand)) #3 C:SmartParkingvendorpdapheanstalksrcPheanstalk.php (255): Pheanstalk Pheanstalk-> отправка (Объект (Pheanstalk Command ReserveCommand)) #4 C:SmartParkingSecondAttempt.php (22): Pheanstalk Pheanstalk->reserve() #5 {main}, добавленный в C:SmartParkingvendorpdapheanstalksrcSocketFileSocket.php в строке 49

Что мне нужно сделать, чтобы решить эту проблему?

Я пытался:

Различные версии PHP, различные версии pheanstalk, перезапуск всего, включая сам сервер BeanStalkD.

Все это запущено на фирменном Windows Server 2016, PHP просто используется в качестве скриптового движка из командной строки.

В настоящее время я использую PHP версии 7.2.

 // Hopefully you're using Composer autoloading.
require('vendor/autoload.php');
use PheanstalkPheanstalk;
// 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. небольшая помощь в расследовании: в pheanstalk/FileSocket.php это fgets($this->socket, 8192); принимает значение false, а затем выдает эту «неизвестную ошибку»

2. Спасибо, чувак, это действительно помогло мне. Я просмотрел этот код, а затем понял, что у меня не было включено расширение sockets в моем PHP.ini. Теперь я чувствую себя настоящим идиотом. Я потратил 2 часа на эту проблему 🙂

3. Вы могли бы написать ответ на свой собственный вопрос с подробным объяснением, что решило эту проблему. Может помочь будущим посетителям.

Ответ №1:

У меня не были включены сокеты в моем PHP.ini

Итак, я изменил :

 ;extension=sockets
  

Для

 extension=sockets
  

Если вы используете PHP как часть веб-сервера, вам придется перезапустить его на этом этапе.

И это устранило мою проблему.