- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
for ($cycle = 1; $cycle <= 6; $cycle++) {
$all_tasks = get_all_tasks();
if ($all_tasks) {
foreach($all_tasks as $one_task) {
$lock_file_abs = __DIR__.'/locks/run_'.$one_task['id'];
$fp = fopen($lock_file_abs,"w+");
if (flock($fp, LOCK_EX | LOCK_NB)) {
solve_one_task($one_task);
flock($fp, LOCK_UN);
}
else {
#не можем запускать обработку задачи
}
fclose($fp);
unlink($lock_file_abs);
}
}
sleep(10);
}
Именно поэтому я против «MYSQL».
Задачи можно хранить в MSMQ или RabbitMQ.
Выполнять можно через spring-integration или apache camel и celery: там везде уже стоит защита от "повторого выполнения"
но пыхоблядь слишком тупа, и думает, что кроме mysql и крона ничего нет на свете
наверняка там еще есть свой класс Db
https://www.php.net/manual/en/intro.mqseries.php
https://www.php.net/manual/en/book.sem
https://www.php.net/manual/en/book.gearman.php
https://www.php.net/manual/en/book.stomp.php
https://framework.zend.com/manual/1.12/en/zend.queue.introduction.html
http://web.archive.org/web/20180418234618/rediska.geometria-lab.net/documentation/integration-with-frameworks/zend-framework/zend_queue-adapter/
Брейн демдж их настолько глубок, что им физически не представить себе что задачу можно решить чем-то кроме крона и майсикула.
Главная проблема пых же не в том, что он язык говеный (питон тоже так себе язык местами), а в том, что пхп портит мозги.
Эти говнорешения с кроном и мускулем он же не с потолка взял: они описаны в книгах, на форумах, всё коммунити о нем знает. Говно -- часть философии
Rabbit писан на эрланге. Эрланг запускает виртуальную машину (BEAM) -- тн ноду. Внутри ноды запускает приложение.
Ноды могут общаться между собой по RPC, однако списоком нод на хосте заведует портмаппер epmd.
1. epmd открывает порт
2. каждая нода на хосте котрывает порт для RPC, и регистрируется в epmd
3. RabbitMQ открывает порт для AMPQ и опцилаьно плагин для веб-морды открывает еще одинр порт
И того у нас два процесса и четыре порта
(rabbitmqctl запускает еще одну BEAM, через epmd находит ноду с rabbit, и шлет ей комманды)
Внутри ноды работают rabbitmq, мониторинг, mnesia (в ней кроль хранит настройки и очередь сообщений) да еще и мнезийная папка зависит от имени хоста (нода@хост) так что переименовав хост можно пососоать писон.
Вся это мандала ради того, чтобы селера своим воркерам (которых может быть вообще один) ставила задачу.
Ну ёбушки-воробушки, это вы бы еще кафку сюда притащили
Какая автоматизация бизнес-процессов )))
https://www.freedesktop.org/software/systemd/man/systemd.timer.html
https://www.freedesktop.org/software/systemd/man/systemd.time.html
А вообще конечно
http://www.celeryproject.org/
и в пизду крон
- интересно, что это за задачи? Выгружать в csv данные о том, сколько галерные макаки мышкой не щёлкали, сидя на удалёнке?
i will create cartoon avatar profile picture
сразу видно успешного программиста