Создать и скачать CSV на PHP
Рассмотрим возможность быстрого создания CSV файла с автоматическим скачиванием файла. Рассмотрим формирование, разделители и header для возможности скачать файл.
xhprof - инструмент, который позволяет собирать информацию как на локальной машине, так и на продакшене.
Выбор пал на xhprof, так как при определенных дополнениях можно визуально отслеживать работу классов и строить графики.
1. Ставим на Ubuntu 14.04 // никак не перебью на новую =)
Штатная команда НЕ ПОДОШЛА, у меня в репозиториях такого нет (apt-get install xhprof), по этому пришлось собирать его на коленке.
sudo apt-get install php-pear php5.6-dev php5.6-mcrypt
sudo php5enmod mcrypt
sudo pecl install xhprof-beta
Установка ведется через pecl, а выше нужные расширения для php и подключение mcrypt. Установочные пакеты зависят от версии линукса и от версии php.
2. Для своей версии php задаем определение в mods-available:
sudo nano /etc/php/5.6/mods-available/xhprof.ini
в файл внесем строки
extension=xhprof.so
Если все прошло правильно, то можно подключить модуль xhprof (под свою версию php).
sudo php5enmod xhprof
sudo service apache2 restart
3. Проверка установленного пакета:
php -i | grep xhprof
4. Начало работы:
После удачной установки и колдовства, в коде перестала бросать ошибки такая конструкция.
<?php
// Инициализируем xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
foreach ([1,2,3] as $v) {
echo $v;
}
// Останавливаем xhprof после выполнения программы
$xhprof_data = xhprof_disable();
XHPROF_FLAGS_CPU - анализ процессорного времени
XHPROF_FLAGS_MEMORY - анализ памяти
Использование очень простое, нужный для отладки код следует поместить между xhprof_enable() и xhprof_disable(). В $xhprof_data будет содержаться вся информация. Но для человеческого понимания она сложна.
5. Для более удобной обработки данной информации:
Существует готовый интерфейс для подачи отстрелянной информации в человеческом виде. Скачать здесь. Или здесь. Или терминал:
cd /var/www;
wget http://pecl.php.net/get/xhprof-0.9.4.tgz
gzip -d xhprof-0.9.4.tgz
tar -xvf xhprof-0.9.4.tar
Следует распаковать содержимое архива в директорию, которая будет доступна как домен. К примеру на локальной машине это /var/www/xhprof-0.9.4
5.1. Заводим локальный адрес (будет xhprof.loc на apache):
sudo nano /etc/apache2/sites-available/xhprof.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName xhprof.loc
ServerAlias www.xhprof.loc
DocumentRoot /var/www/xhprof-0.9.4/xhprof_html
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/xhprof-0.9.4/xhprof_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
sudo nano /etc/hosts
127.0.0.1 www.xhprof.loc
127.0.0.1 xhprof.loc
sudo service apache2 restart
Как уже понятно, рабочая папка этого движка - xhprof_html. Фронтовая часть выглядит так:
5.2. Использование в коде:
Для использования, после xhprof_disable() следует добавить строки определения места, куда сбрасывать отработанные логи.
<?php
// Инициализируем xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
foreach ([1,2,3] as $v) {
echo $v;
}
// Останавливаем xhprof после выполнения программы
$xhprof_data = xhprof_disable();
// Стаживает данные с идентификатором ""
// Обратите внимание, что путь, в который мы распаковали все
include_once "/var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_lib.php";
include_once "/var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "product");
Выдаст много информации по всем запущенным классам:
6. Графический отчет:
Так же xhprof позволяет генерировать графический отчет, по которому понятно что и куда стучится. Для этого нужна установка graphviz.
sudo apt-get install graphviz
Рассмотрим возможность быстрого создания CSV файла с автоматическим скачиванием файла. Рассмотрим формирование, разделители и header для возможности скачать файл.
Последние шаблоны от ImageCMS 4.12, для скачивания нужна авторизация.
Рассмотрим варианты популярные варианты хранения товаров в корзине в интернет-магазине. Обозначим плюсы и минусы таких хранений. Рассмотрим варианты долгосрочного хранения корзины.
Создание ключа для imageCMS 4.9-4.12.1 Pro и Pre. Для получения следует авторизироваться.
При запуске скрипта с консоли отсутствует DOCUMENT_ROOT в $_SERVER. Попытаемся обойти это своими путями, отловить директорию файла.
Разберем возможность объединения условий в запросе по группам в Propel. Рассмотрим пример фильтрации по полям с помощью ->condition() и ->combine().
Столкнулся с проблемой авторизации 1с на сайте. Сервер почему то не принимал от нее параметр PHP_AUTH_USER и PHP_AUTH_PW. Рассмотрим подробнее решение и обход данных параметров в $_SERVER .
Целью статьи стало присоединение (join) не объявленной в схеме (schema.xml) таблице в propel2. Видимо редкий случай или просто недостаточно документации по данной Propel ORM.