Архив рубрики: Новости

Yii2 жадная загрузка для вычисляемых/агрегируемых полей


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306
// https://github.com/yiisoft/yii2/blob/34aeb019e51978f8f9982d9dd8bd3ed8798e7217/docs/guide-ru/db-active-record.md
class Customer extends \yii\db\ActiveRecord
{
/**
* Объявляет виртуальное свойство для агрегируемых данных, доступное только на чтение.
*/
public function getOrdersCount()
{
if ($this->isNewRecord) {
return null; // нет смысла выполнять запрос на поиск по пустым ключам
}

return $this->ordersAggregation[0]['counted'];
}

/**
* Объявляет обычное отношение 'orders'.
*/
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
}

/**
* Объявляет новое отношение, основанное на 'orders', которое предоставляет агрегацию.
*/
public function getOrdersAggregation()
{
return $this->getOrders()
->select(['customer_id', 'counted' => 'count(*)'])
->groupBy('customer_id')
->asArray(true);
}

// ...
}

foreach (Customer::find()->with('ordersAggregation')->all() as $customer) {
echo $customer->ordersCount; // выводит агрегируемые данные из отношения без дополнительного запроса благодаря жадной загрузке
}

$customer = Customer::findOne($pk);
$customer->ordersCount; // выводит агрегируемые данные отношения через ленивую загрузку

wget загрузить все элементы страницы


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

Если необходимо загрузить все элементы страницы — картинки, js, css, fonts, то в этом поможет wget.

wget -xr -l 1 http://site.com
ключи :

  • x — для каждого элемента адреса создавать подпапку : site/com
  • r — рекурсивно загружать данные
  • l 1 — глубина рекурсии один, т.е. только эту страницу и её элементы

linux как называется проводник


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

В windows  для вызова проводника из командной строчки достаточно написать
start .
В linux для этого используется nautilus
nautilus .

postfix get eml from queue


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

Иногда для отладки нужно достать сообщение с сервера и посмотреть его при помощи почтового клиента.
На сервере работает Postfix. Смотреть через Mozilla Thunderbird.

Найти в очереди сообщение, оно в виде BFFB342157BA :
postqueue -p | less

Сохранить сообщение в eml файле :
postcat -bhq BFFB342157BA > /home/mail.eml

Если работаем не под рутом, то установить права локального пользователя :
chown localuser:localuser /home/mail.eml

Затем через графический проводник находим файл, Open With -> Thunderbird .

Сам eml можно загрузить в другое место и открыть другой программой, например outlook и т.п.

Apache 2.4 mod_rpaf CentOS 7


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

Модуль mod_rpaf для apache 2.4 не совместим. Проверено на CentOS 7.

CentOS 7 ISPManager 4


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

CentOS 7 и ISPManager 4 друг с другом не ставятся. Используйте ISPManager 5.

Поиск ошибок php в логе Yii


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

В лог часто пишется очень много информации и актуально в ней найти критичную. Например критическую ошибку php. Лог-файле фреймфорка Yii это будет выглядить :

[error] [php]

Быстрый поиск в логе apache всех ответов кроме 200


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

Для быстрого поиска в логе Apache всех ответов, кроме 200 можно воспользоваться просмотром лога через mc и поиском с регулярным выражением :

HTTP/1.\d" (?!200)

Данное регулярное выражение означает искать все ответы сервера, кроме HTTP 200. Для протоколов HTTP 1.0 и 1.1

В поиске не забыть поставить селект на «(*) Regular expression»

список всех cron задач


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306

Чтобы узнать список всех cron задач на сервере под управлением CentOS надо зайти в папку /var/spool/cron , там для каждого пользователя будет текстовый файл с cron задачами.

Call to undefined function posix_mkfifo


Warning: Use of undefined constant videoembedder_options - assumed 'videoembedder_options' (this will throw an Error in a future version of PHP) in /home/devintru22/data/www/devint.ru/wp-content/plugins/video-embedder/video-embedder.php on line 306
Call to undefined function posix_mkfifo
yum install php-posix
service httpd reload