Я создал Saas, который собирает заказы с разных сайтов для компаний,
веб-сайты являются своего рода «издателями», которые ежедневно предоставляют заказы компании.
У меня нет API, поэтому я удаляю HTML с этих сайтов, используя имя пользователя и пароль, предоставленные мне компанией.
После импорта и сохранения заказов в моей базе данных я отправляю их на принтер компании с помощью API облачной печати Google, а компания работает над заказом в режиме реального времени.
После того, как заказ был отправлен на печать, я отправляю запрос на публикацию на веб-сайте, который, в основном, нажимает кнопку с надписью «Я получил заказ, и я над ним работаю», что-то вроде принятия / утверждения заказа.
у компании есть пользовательский интерфейс, который показывает им таблицу сегодняшних заказов, для каждого заказа они могут видеть, что заказ был утвержден и отправлен на принтер с помощью облачной печати Google, и они предполагают, что заказ действительно был напечатан.
Пока все хорошо, но у меня большая проблема.
иногда облачная печать Google не распознает принтер, и компании приходится перезагружать компьютер, подключенный к принтеру, проблема в том, что мой пользовательский интерфейс показывает пользователю, что заказ уже распечатан, а также утверждает заказ на исходном веб-сайте. поэтому клиенты получили подтверждение, что компания работает над заказом прямо сейчас.
Google Cloud Print API предоставляет мне возможность проверить состояние печати, но это занимает около 6 секунд, и, возможно, статус «в процессе», поэтому мне потребуется более 6 секунд для 1 заказа, чтобы получить статус, который я желаю — «сделанный».
сейчас у меня есть задания на 2 кроны, которые запускаются каждую минуту,
первый импортирует новые заказы, а второй отправляет новые заказы на печать.
когда я отправляю заказ на печать, это занимает около 4 секунд, поэтому я могу отправлять только до 15 заказов в минуту, как я уже говорил, компании работают в режиме реального времени, поэтому у меня не может быть никаких задержек с момента появления заказа в один из сайтов на тот момент, когда выходит принтер
Я хотел бы, чтобы я работал так:
шаг 1:
импортировать заказ
шаг 2:
отправить его на принтер
шаг 3:
проверить статус
шаг 4:
утвердить заказ на сайте после того, как я получил статус «выполнено».
Я думаю, что моя самая большая проблема заключается в том, что он не работает с многопоточностью
Я ищу лучший способ управления и работы с многопоточными заданиями в PHP.
Задача ещё не решена.
Других решений пока нет …