Worker Gearman з консолі Cli на Php / ~#root -i Worker Gearman з консолі Cli на Php / ~#root -i Worker Gearman з консолі Cli на Php / ~#root -i Worker Gearman з консолі Cli на Php / ~#root -i Worker Gearman з консолі Cli на Php / ~#root -i Worker Gearman з консолі Cli на Php / ~#root -i Worker Gearman з консолі Cli на Php / ~#root -i Worker Gearman з консолі Cli на Php / ~#root -i
  • RU
  • UA
  • EN
  • Створити інтернет-магазин
  • Документація
  • Блог
    • Unix-подібні ОС
    • Php
    • MySQL
    • JavaScript
    • Менеджери пакетів
    • Docker
    • Seo
  • Допоміжні сервіси
    • Короткі посилання
    • Oбмін переглядами YouTube
  • Вхід
  • Реєстрація
  • Головна
  • Php
  • Worker Gearman з консолі Cli на Php

Worker Gearman з консолі Cli на Php

Щоб не описувати повторно, даю посилання деталі . На основі цієї теми, ми намагатимемося запустити воркер через консоль і дати йому якусь роботу через клієнт.

Внесемо до коду деякі зміни. Замість збереження даних у файлі, ми будемо використовувати виведення в консоль.

file_put_contents("php://stdin", 'рядок виведення');

Продемонструю файл server.php із новими змінами.

<?php


$gmw = new GearmanWorker();

/**
 * Поки розглянемо ініціалізацію addServer() за замовчуванням
 * Цей метод потрібен для оголошення, на якій машині працює цей worker
 */
$gmw->addServer();

/**
 * log_client - з боку клієнта використовувати цей alice
 * work_log - функція, на яку кидатиме воркер, якщо
  * на alice log_client прийде щось.
 */
$gmw->addFunction('log_client', 'work_log');

/** /> * Спеціально зроблено заціювання
 * Якщо оголосити просто $gmw->work(), то завдання завершиться відразу ж після виконання. Тобто спрацює тільки раз.
 */
while($gmw->work());

/**
 * Вписує логи у файл
 * @param JSON $param - Приймає тільки рядок, тому передаємо в json якщо потрібно
&nbsp ;*/
function work_log($param) {
    /*Достає дані, що передаються клієнтом*/
    $data = $param->workload();
    
    /**
     * Штучно робимо навантаження, щоб була імітація великого очікування.
     * Тут ми побачимо, що скрипт клієнта не чекатиме закінчення 100 секунд,
     * а повісить завдання і забуде про неї.
     */
    for ($i = 0; $i < 100; $i++) {
        sleep(1);
        file_put_contents("php://stdin", $data); // Змінили для виведення в консоль
    }
    
}

Запуск з консолі здійснюється так (наш проект лежить у директорії /var/www/test1.loc):

php /var/www/test1.loc/server.php

Цей рядок у консолі повісить воркер в очікуванні. Він буде чекати на роботу поки не закриється консоль або не скінчиться час очікування max_input_time в php.ini .

Ожидание воркера

Видно, що консолі чекає (Warning свідчить про можливу проблему в самій бібліотеці Gearman). Після запуску client.php наочно видно, що у браузері все завершилося, а консоль працює сама собою. Якщо консоль закрити, і запустити потім заново воркер, він продовжить роботу далі з того моменту, на якому зупинився.

Работа воркера

19 Травня 18
812
0

Відгуки

Ім'я
Електронна пошта
Рейтинг
Відгук

Інші статті з категорії

25 Квітня 2022

Створити та завантажити CSV на PHP

Розглянемо можливість швидкого створення CSV файлу з автоматичним скачуванням файлу. Розглянемо формування, роздільники та header для можливості завантажити файл.

19 Червня 2019

Шаблони ImageCMS 4.10-4.12.1

Останні шаблони від ImageCMS 4.12, для завантаження потрібна авторизація.

26 Січня 2019

Довге зберігання кошика в інтернет-магазині

Розглянемо варіанти популярних варіантів зберігання товарів у кошику в інтернет-магазині. Позначимо плюси та мінуси таких зберігання. Розглянемо варіанти довгострокового зберігання корзини.

17 Січня 2019

Ключ-ліцензія для ImageCMS 4.9-4.12.1 Pro та Pre

Створення ключа для imageCMS 4.9-4.12.1 Pro та Pre. Для отримання авторизуватися.

07 Грудня 2018

$_SERVER[DOCUMENT_ROOT] у CLI або Cron

При запуску скрипта з консолі немає DOCUMENT_ROOT в $_SERVER. Спробуємо обійти це своїми шляхами, відловити директорію файлу.

31 Жовтня 2018

Аналіз навантажених частин Php коду за допомогою xhprof

Після розробки будь-якого інструменту на PHP стає питання, наскільки створений код ресурсний і які елементи він зачіпає ще. Розглянемо установку xhprof, налаштування та розглянемо способи роботи з xhprof.

18 Липня 2018

Угруповання умов у запиті ORM Propel (condition, combine)

Розберемо можливість об'єднання умов у запиті груп у Propel. Розглянемо приклад фільтрації по полях за допомогою -> condition () і -> combine ().

14 Червня 2018

Авторизація 1С на сайті PHP_AUTH_USER на CentOS apache

Зіткнувся із проблемою авторизації 1с на сайті. Сервер чомусь не приймав від неї параметр PHP_AUTH_USER і PHP_AUTH_PW. Розглянемо докладніше рішення та обхід даних параметрів $_SERVER .

Категорії

  • Unix-подібні ОС
  • Php
  • MySQL
  • JavaScript
  • Менеджери пакетів
  • Docker
  • Seo

Останні коментарі

Добрый день, Сергей. Я на более новых версиях блют...
root-i
23.02.23
Пробовал на transmart колонке. Ничего из перечисле...
Сергей
20.02.23
HenryMit, может быть
root-i
07.02.23
Неофрейдизм — это… Определение, принципы, представ...
HenryMit
07.02.23

Ділюсь інформацією у якій я вимагав допомоги та розбираючись витрачав багато часу. Якщо інформація допомогла хоча б одній людині, то цей сайт створений не дарма.

Подяка на продовження роботи сайту:
Контакти

Telegram Viber Mail

Пошук по сайту

  • Вхід
  • Реєстрація

Сайт працює на chmod -R