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

// 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 загрузить все элементы страницы

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

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

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

postfix get eml from queue

Иногда для отладки нужно достать сообщение с сервера и посмотреть его при помощи почтового клиента.
На сервере работает 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 всех ответов кроме 200

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

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

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

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

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

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