Як правильно читати теги з двокрапкою (<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 на цілісність інформації.
Розглянемо виправлення зникнення пробiлiв перед змінними у старій версії Twig на php 7.4 не оновлюючи версію.
Розглянемо можливість швидкого створення CSV файлу з автоматичним скачуванням файлу. Розглянемо формування, роздільники та header для можливості завантажити файл.
Останні шаблони від ImageCMS 4.12, для завантаження потрібна авторизація.