olmayan bir engelleme HTTP POST isteği gönderme

6 Cevap php

I have a two websites in php and python. When a user sends a request to the server I need php/python to send an HTTP POST request to a remote server. I want to reply to the user immediately without waiting for a response from the remote server.

O kullanıcıya bir yanıt gönderdikten sonra bir php / python komut dosyası çalışmaya devam etmek mümkündür. Bu durumda ilk kullanıcıya cevap olacak ve ancak o zaman uzak sunucuya HTTP POST isteği göndermek.

O tüm yanıtı işleme olmadan php / python olmayan bir engelleme HTTP istemci oluşturmak mümkün mü?

Php ve python aynı mantık olacak bir çözüm benim için tercih edilir.

Teşekkürler

6 Cevap

PHP (Ben kullanmak için doğru sözdizimi bilmiyorum ancak bu, HTTP ilgili ve Python da çalışır) bu isteği göndererek bağlantıyı kapatabilirsiniz:

// Send the response to the client
header('Connection: Close');
// Do the background job: just don't output anything!

Addenum: Ben muhtemelen "Bağlam-Length" ayarlamak zorunda söylemeyi unutmuşum. Ayrıca, this comment ipuçları ve gerçek bir test durumu için kontrol edin.

Sen başka bir sunucuya POST işlemek için başka bir işlem spawn olabilir. PHP size süreci ve "kesmek" doğuracağı böylece yanıt için beklemek yok.

exec("nohup /path/to/script/post_content.php > /dev/null 2>&1 &");

Daha sonra yazı gerçekleştirmek için kıvrılabilir. Eğer PHP komut dosyası parametreleri geçirmek istiyorsanız, bunları okumak için Getopt () işlevini kullanabilirsiniz. Eğer Python benzer bir şey olsaydı emin değilim.

Yapmanız gereken PHP komut dosyası sunucu çağrıyı yapar ve sonra kullanıcıya isteği gönderir başka komut dosyasını yürütün olması.

Sen cURL PHP kullanarak yapabilirsiniz. İşte bir example olmayan bir engelleme (veya asenkron) bir şekilde kıvırın kullanarak istekte bulunuyor.

cURL de Python için kullanılabilir.

Python sadece çıkış akışı yakın olabilir, sonra da Mesajı isteğinizi yapmaya devam

sys.stdout.close()

Hookah sorunu çözmek için tasarlanmıştır.