Size: a a a

2021 April 17

F

Future in phpclub.ru
pnctl fork вопрос
если я на нём пишу демона, которые выполняется, как мне передать ему сигнал извне?
источник

PC

Pavel Chebotarev in phpclub.ru
Послать сигнал через стандартные средства отправки сигналов, включая утилиту kill
источник

F

Future in phpclub.ru
понял, то есть командой только, думал можно как-то со скрипта другого (другой процесс) по pid первого
источник

PC

Pavel Chebotarev in phpclub.ru
Почему, из скрипта думаю можно
источник
2021 April 18

F

Future in phpclub.ru
Примерчик был как туда посылать и как ловить
источник

PC

Pavel Chebotarev in phpclub.ru
источник

PC

Pavel Chebotarev in phpclub.ru
Там и примерчики и как ловить и как посылать
источник

ЕФ

Евгений Фрост... in phpclub.ru
Приветствую, коллеги! Кто-то использовал в работе либу https://github.com/php-amqplib/php-amqplib для кролика?
Суть задачи в следующем: есть абстрактные заказчики и абстрактные исполнители, которых надо в кротчайшие сроки свести между собой (ближайших). Для поиска исполнителя запускается фоновая задача, которая начинает искать и предлагать работу исполнителям, время работы задачи в среднем минут 5-10.
Суть вопроса вкратце: Как решить проблему очереди задач которые нужно оперативно запускать и однопоточности данного решения?
Вариант с запуском огромного кол-ва слушателей ручками не годится - заказов может быть абстрактно бесконечное число. Как грамотно организовать обработку сообщений, таким образом чтобы каждое уходило в отдельный поток или процесс при этом сохранялась функция контроля исполнения задачи (при успехе ее снять, при провале перезапустить).
источник

PC

Pavel Chebotarev in phpclub.ru
> Для поиска исполнителя запускается фоновая задача, которая начинает искать и предлагать работу исполнителям,
Я вот на этом уже сломался.
Исполнителя никто не ищет обычно, они сами слушают определенную очередь. А заказчики просто пихают в эту очередь задачи, все время в одну.
источник

ЕФ

Евгений Фрост... in phpclub.ru
исполнителя - человека
источник

ЕФ

Евгений Фрост... in phpclub.ru
заказчик создает заказы для исполнителя
источник

PC

Pavel Chebotarev in phpclub.ru
Тогда вообще ничего не понятно, это типа реалтайм система? Заказы должны появляться на странице у исполнителей а они могут их взять? Надо вебсокетом связывать сервер и браузеры исполнителей?
источник

ЕФ

Евгений Фрост... in phpclub.ru
Да, риалтайм, но немного не такой как описано. Заказчик размещает заказ, система начинает перебор исполнителей от ближайшего к дальнему по расстоянию. Типа первому кинула заказ, 15 секунд ждет согласия, если нет, пинает исполнителя в блокировку и кидает следующему. Заказы улетают исполнителям через пуш уведомление на смартфон.
источник

ЕФ

Евгений Фрост... in phpclub.ru
Фишка в том, что таких заказов может быть очень много и все они летят в одну очередь кролика. Суть в том, как сделать так, чтобы обработчик очереди запускал обработку заказа асинхронно, не дожидаясь завершения поиска исполнителя по предыдущему заказу.
источник

PC

Pavel Chebotarev in phpclub.ru
Да вроде можно и одним тредом обойтись. Заюзать какой-нибудь https://github.com/rabbitmq/rabbitmq-delayed-message-exchange
Дальше как приходит заказ - сохраняем его в базу со статусом "ожидает" и посылаем в ту же очередь сообщение "ожидание истекло" с таймаутом 15 секунд. Если за это время кто-то успел принять заказ, то он в базе должен пометиться как "в работе", и тогда прилетевшее сообщение таймаута просто игнорируется. В противном случае посылаем пуш новому исполнителю, а в очередь снова отправляем сообщение "таймаут"
источник

PC

Pavel Chebotarev in phpclub.ru
Если хочется асинхронно то можно вот это заюзать https://github.com/amphp/amp
источник

ЕФ

Евгений Фрост... in phpclub.ru
все немного сложнее....
источник

ЕФ

Евгений Фрост... in phpclub.ru
заказчиков рядом может и не быть, а найти их надо
источник

PC

Pavel Chebotarev in phpclub.ru
Ну у тебя должен быть список заказчиков и их координат, дальше считаешь расстояние минимальное
источник

PC

Pavel Chebotarev in phpclub.ru
Это другая задача
источник