Как правильно читать теги с двоеточием (<p:id>) в google_merchant.xml в PHP
Способ чтения xml с тегами имеющими двоеточие <p:id>, как в выгрузке в Google Merchant. Использование registerXPathNamespace или обращение к тегу напрямую.
Про установку Gearman Job Server - можно прочитать здесь.
Если все получилось согласно инструкциям по установке Gearman, то можно продолжить.
Начну с того, что для правильной работы потребуется создать некий воркер (worker), с которым будет общаться клиент (client) на Php, ставя свои задачи в очередь в фоновом режиме или дожидаясь ответа.
Создам самый простой пример на двух файлах, который позволит понять логику работы Gearman. Наш полигон будет состоять из двух файлов:

server.php - файл в котором мы создадим worker, который будет обрабатывать все запросы. В данном примере он будет доступен по локальной ссылке : http://test1.loc/server.php
client.php - файл в котором мы будем ставить задачи для созданного воркера. Это будет наш клиент, которому будет требоваться ставить фоновые задачи. В данном примере он будет доступен по локальной ссылке : http://test1.loc/client.php
1. Рассмотрим часть ожидающего задачи воркера 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 если нужно
*/
function work_log($param) {
/*Достает данные передаваемые клиентом*/
$data = $param->workload();
/**
* Искуственно делаем нагрузку, чтобы была имитация большого ожидания.
* Тут мы увидем, что скрипт клиента не будет ждать окончания 100 секунд,
* а повесит задачу и забудет про нее.
*/
for ($i = 0; $i < 100; $i++) {
sleep(1);
file_put_contents('log.txt', $data, FILE_APPEND);
}
}
2. Рассмотрим сторону клиента, который шлет задачи воркеру client.php:
<?php
$client = new GearmanClient();
/**
* Объявляем сервер, на котором нас ждет воркер. Пока все настройки поумолчанию
*/
$client->addServer();
/**
* doBackground() - вешаем задачу не ожидая завершения.
* log_client - alice на функцию work_log() из server.php
*
* второй параметр "Тестовый ЛОГ. \r\n" - уйдет в фкнкцию work_log();
*/
$client->doBackground('log_client', "Тестовый ЛОГ. \r\n");
Вам приведен самый простой действующий прототип задачи поставленой на стороне Php в фоновом режиме.
3. Как это работает?
Схема работы сервиса Gearman проста. В server.php находится сам обработчик. Пока что его будем запускать в браузере, но в дальнейшем ссылкой http://test1.loc/server.php. Запрос браузера станет в постоянное ожидание из-за строк while($gmw->work());
Если запустить $gmw->work(); не в цикле, то после запуска клиентской части, скрипт отработает 1 раз и завершится.
В отдельном окне запускаем client.php ссылкой http://test1.loc/client.php. Как можно увидеть, запустится функция work_log() из server.php и будет писать слово передаваемое клиентом в файл log.txt в течении 100 секунд, 100 раз.
Если бы это делалось без gearman, то скрипт ожидал бы конца 100 секунд. Но благодаря фоновой задачи doBackground(), клиент не ощущает потерь времени и скрипт завершается не ожидая конца.
Способ чтения xml с тегами имеющими двоеточие <p:id>, как в выгрузке в Google Merchant. Использование registerXPathNamespace или обращение к тегу напрямую.
Разбор JWT HS256 шифрования, расшифровка JWT HS256, сравнение сигнатур sha256 на целостность информации.
Рассмотрим исправление исчезновения пробелов перед переменными в старой версии Twig на php 7.4 не обновляя версию.
Рассмотрим возможность быстрого создания CSV файла с автоматическим скачиванием файла. Рассмотрим формирование, разделители и header для возможности скачать файл.
Последние шаблоны от ImageCMS 4.12, для скачивания нужна авторизация.