Skip to content

Instantly share code, notes, and snippets.

View zhuravljov's full-sized avatar

Roman Zhuravlev zhuravljov

  • G5
  • Kharkiv, Ukraine
View GitHub Profile
@zhuravljov
zhuravljov / mysql-lock.php
Created August 27, 2018 08:14
Запуск команды с сетевой синхронизацией через MySQL
#!/usr/bin/env php
<?php
/**
* Запуск команды с сетевой синхронизацией через MySQL.
*
* Когда запускается сеть из docker-контейнеров каждый php-контейнер в числе
* прочих запускает команду миграции БД. И, чтобы исключить высокую вероятность,
* запуска нескольких таких процессов одновременно, используется синхронизация
* на уровне блокировок MySQL. Это гарантирует, что одновременно будет работать
* только одна из запущенных команд, а остальные будут ждать завершения.
@zhuravljov
zhuravljov / cron.php
Created August 27, 2018 08:00
Эмулятор Cron для докер Docker-контейнера
#!/usr/bin/env php
<?php
/**
* Скрипт для запуска команды по расписанию, для замены cron-а в сети из docker-контейнеров.
*
* Пример команды, которая будет запускаться каждую минуту:
* docker/php/cron.php "* * * * *" php yii rate/update
*
* Зависимости:
* "mtdowling/cron-expression": "~1.2.0"
<?php
namespace common\models;
use Yii;
use yii\base\Behavior;
use yii\base\Model;
use yii\base\ModelEvent;
/**
@zhuravljov
zhuravljov / yii2-queue-wait-time-benchmark.md
Created November 4, 2017 13:48
Yii2 Queue Wait Time Benchmark
$ php tests/yii benchmark/waiting fast 1000 10

- gearmanQueue:     MEDIAN = 0.0005 s; AVG = 0.0006 s; MIN = 0.0002 s; MAX = 0.0049 s
- beanstalkQueue:   MEDIAN = 0.0007 s; AVG = 0.0008 s; MIN = 0.0004 s; MAX = 0.0135 s
- redisQueue:       MEDIAN = 0.0013 s; AVG = 0.0014 s; MIN = 0.0006 s; MAX = 0.0056 s
- amqpQueue:        MEDIAN = 0.0016 s; AVG = 0.0020 s; MIN = 0.0007 s; MAX = 0.0595 s
- mysqlQueue:       MEDIAN = 0.8187 s; AVG = 0.7847 s; MIN = 0.0021 s; MAX = 0.9679 s
- fileQueue:        MEDIAN = 0.8408 s; AVG = 0.8332 s; MIN = 0.0407 s; MAX = 0.9703 s