Обрыв соединения и дальнейшее выполнение скрипта.

  • Автор темы Автор темы sunchess
  • Дата начала Дата начала

sunchess

Новичок
Обрыв соединения и дальнейшее выполнение скрипта.

Здравствуйте.
Есть не тривиальная задача: 2 скрипта, первый посылает второму данные, второй должен получить их и оборвать соединение, а сам продолжить работу.
Соединение по http.
Тут в соседней ветке обсуждают что-то подобное http://phpclub.ru/talk/showthread.php?s=&threadid=115776&rand=62, но в моей ситуации скрипты находятся на разных серверах.

Есть ли знатоки, кто делал подобное?
 
Есть не тривиальная задача: 2 скрипта, первый посылает второму данные, второй должен получить их и оборвать соединение, а сам продолжить работу.
вариант 3
скрипт получает данные, и скидывает их в очередь.
крон ежеминутно читает очередь и обрабатывает данные.
 
Если я правильно понял то сервер 1 посылает запрос на сервер 2. Данные кончились 1 сервер отрубил соединение, на 2 сервере скрипт продолжает работать. В чём проблема то?
 
2й сервер должен подтвердить получение данных в ответе
 
Патоки под апачем не работают. Пока отрубаю соединение со стороны первого сервака. Но это полу мера, действительно хотелось бы проверить целостность данных.


Может можно как то не через http решить вопрос?
 
Первый вариант: делаешь proc_open на отдельный скрипт долгой обработки, чтение через pipe, stdout в /dev/null, stderr в лог. В pipe передаешь нужные данные. (Если нужно получить от скрипта какой-то идентификатор - на stdout тоже pipe, скрипт сразу туда отдает id и закрывает stdout). Преимущество - просто, как два пальца. Недостаток - неконтролируемое число таких скриптов, при большом потоке можно получить неуправляемый сервер.

Второй вариант: вешаешь фоном демоноподобный скрипт, далее два варианта: первый - демон слушает какой-то порт, соединяешься с ним и передаешь данные (но тут придется заморочиться с асинхронностью либо архитектурой master-workers), либо через любой сервер очередей (можно и mysql в этом качестве использовать вполне).

Естественно, если нужно узнать результат работы, нужен отдельный поллер.
 
Сверху