Создать и скачать CSV на PHP
Рассмотрим возможность быстрого создания CSV файла с автоматическим скачиванием файла. Рассмотрим формирование, разделители и header для возможности скачать файл.
Про установку 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(), клиент не ощущает потерь времени и скрипт завершается не ожидая конца.
Рассмотрим возможность быстрого создания CSV файла с автоматическим скачиванием файла. Рассмотрим формирование, разделители и header для возможности скачать файл.
Последние шаблоны от ImageCMS 4.12, для скачивания нужна авторизация.
Рассмотрим варианты популярные варианты хранения товаров в корзине в интернет-магазине. Обозначим плюсы и минусы таких хранений. Рассмотрим варианты долгосрочного хранения корзины.
Создание ключа для imageCMS 4.9-4.12.1 Pro и Pre. Для получения следует авторизироваться.
При запуске скрипта с консоли отсутствует DOCUMENT_ROOT в $_SERVER. Попытаемся обойти это своими путями, отловить директорию файла.
После разработки какого-либо инструмента на PHP, становится вопрос, насколько созданный код ресурсный и какие элементы он затрагивает еще. Рассмотрим установку xhprof, настройку и рассмотрим способы работы с xhprof.
Разберем возможность объединения условий в запросе по группам в Propel. Рассмотрим пример фильтрации по полям с помощью ->condition() и ->combine().
Столкнулся с проблемой авторизации 1с на сайте. Сервер почему то не принимал от нее параметр PHP_AUTH_USER и PHP_AUTH_PW. Рассмотрим подробнее решение и обход данных параметров в $_SERVER .