Створити та завантажити 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($ 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.