Intereting Posts
Есть ли способ создать отдельные вкладки YouTube для каждого видео в списке воспроизведения YouTube? Как преобразовать логическое значение в строку Объединение 2 pdf с Zend Framework Просмотр кэширования в Laravel 4 Как читать большие листы из больших файлов Excel (27 МБ +) с помощью PHPExcel? Как отформатировать электронную почту, с которой Hotmail / Outlook доволен? Если вы включите файл в PHP в цикле, он будет обращаться к файлу каждый раз, когда он будет работать в цикле? Предоставляет ли PHP функцию fopen реализовать какой-то кеш? Я хочу найти текущее местоположение пользователя в php Ток доступа Google OAuth не обновляет токен NULL создать представление, которое получает ранг, имя пользователя и количество записей пользователя xdebug не активирует точку останова В чем разница между self :: $ bar и static :: $ bar в PHP? Почему $ _SERVER показывает HTTP / 1.0, когда клиент говорил HTTP / 1.1 Платежный шлюз MediaWiki

Невозможно получить очередь Beanstalkd для работы в PHP

У меня Ubuntu работает XAMPP ( стек лампы: Linux, Apache, MySQL, PHP, Pear ). Я хотел бы использовать PHP и Beanstalkd вместе, чтобы сделать простую очередь, когда пользователь переходит на page1.php , JOB отправляется в QUEUE для захвата WORKER . Задача JOB – это оператор SQL, который затем выполнил WORKER:

То, что я сделал до сих пор:

  1. Установленный Beanstalkd: sudo apt-get install beanstalkd

  2. Разработал php-код и «задание», которое должно быть выполнено на стр . 1.php . Задача заключалась в том, чтобы отправить sql-оператор $sql в очередь для выполнения рабочими (в будущих версиях задание будет намного сложнее, поэтому система очередей будет еще более важна).

page1.php:

 if (isset($_SESSION['authenticated'])) { //if the user is logged in, send an sql statement to the queue $user_id = $_SESSION['id']; $sql = "UPDATE user_table SET count = count + 1 WHERE id = {$user_id}"; //... missing code that would send the statement } ?> 
  1. Разработал действия, которые должен выполнить WORKER .

РАБОЧИЙ:

 <?php $stmt = $conn->query($sql);//simple update ?> 

ПРОБЛЕМА / ВОПРОС:

Проблема в том, что я не знаю, какие функции вызывать, чтобы создать рабочего, какую функцию вызывать для отправки очереди. Я искал в Интернете различные примеры, но нет полных и с очень расплывчатыми объяснениями. Я видел, что существует нечто, называемое pheanstalkd, которое я читал, было оберткой для beanstalkd, и многие люди используют его в Интернете, но я не уверен, что это требование или нет. Может ли кто-нибудь направлять меня в правильном направлении, с какими функциями мне нужно позвонить или какие коды мне нужно выполнить в терминале linux, чтобы просто запустить этот один пример? Вся обратная связь очень ценится и поможет мне не потерять больше волос на этой неделе.

РЕШЕНИЕ НАЙДЕНО:

После нескольких исследований мне удалось заставить его работать! Достаточно приличного количества, чтобы добраться до этого момента. Этот процесс был следующим:

  1. Выполнение sudo apt-get install beanstalkd в терминале linux для установки beanstalkd.
  2. Выполните sudo apt install composer для установки композитора, который рекомендуется использовать для установки pheanstalk.
  3. Создайте файл composer.json , который позволит композитору узнать, какую библиотеку загрузить и какую версию указанной библиотеки. Например:

     { "require": { "pda\pheanstalk": "2.1.1" } } 
  4. Выполните composer install в терминале linux. Это нужно сделать в той же папке, что и файл composer.json.

  5. Включите необходимый код, который будет инициировать класс Pheanstalk и использовать его как задокументированный. И это все! Образец кода будет выглядеть следующим образом:

     <?php require_once('vendor/autoload.php');//require the autoload file provided by //composer //Initiate an instance of the Pheanstalk class $pheanstalk = new Pheanstalk_Pheanstalk('127.0.0.1'); //adding a job to queue/tube testtube: $pheanstalk->useTube('testtube')->put('message'); //obtaining the job by a worker: $job = $pheanstalk->watch('testtube')->ignore('default')->reserve(); echo $job->getData;//outputting the message $pheanstalk->delete($job);//deleting the job from the queue. ?>