Bir Sabun istek üzerine KeepAlive paketler

1 Cevap php

Sanırım aynı VLAN iki sunucu arasında yapıyoruz bazı Sabun istekleri ayıklarken oldum. Tek bir sunucu üzerinde uygulama PHP ile yazılmış, diğer yandan uygulama Java ile yazılmış. Ben kontrol ve PHP kodu değişiklikleri yapmak, ama Java sunucu etkilemez yapabilirsiniz. PHP uygulaması cURL uzantısını kullanarak isteği gönderir, sonra DOMDocument nesneleri kullanarak XML oluşturur.

Sabun isteği tamamlamak için 5 dakikadan daha uzun sürdü, her zaman bu gibi bir mesaj ile maksimum zaman aşımı sınırı ve çıkışına kadar bekleyecekti:

Operasyon alınan 0 bayt ile 900000 milisaniye sonra zaman aşımına uğradı

Gönderilen ediliyordu paketleri koklama sonra, sorun eski bir bağlantısı olduğunu düşündüğüm kapanış oldu ağındaki bir 5 dakikalık zaman aşımı neden olduğu ortaya çıktı. Iptables zaman aşımını yumru veya istek üzerine KeepAlive paketleri göndermeye başlar: bunu düzeltmek için iki yol vardı.

Kapsamlı olması, ben de çözümleri uygulamak istiyoruz. Zaman aşımı kadar darbeleme op yapmak için kolay oldu, ama KeepAlive paketleri göndererek zor olduğu ortaya çeviriyor. CURL kütüphanesi kendisi (CLI uygulaması için --keepalive-time bayrağı görmek) bu destekler, ancak bu PHP cURL library uygulanan olduğunu görünmüyor. Ben bile emin bir belgelenmemiş bir özellik değildi yapmak için kaynağını kontrol etti.

Benim soru şudur: Bu paketler gönderilen Ne halt alabilirim? Ben birkaç net seçenekleri görmek, ama ben bunların hiçbirini sevmiyorum:

  • shell_exec CLI uygulaması ing tarafından isteği başlayacak bir sargıyı yazın. Bu sadece sevmiyorum kesmek
  • Bunu desteklemek için cURL uzantısı güncelleyin. Bu Ops uygun olmayan bir seçenektir.
  • Soket kendimi açın. Sadece yeterince tehlikeli olduğunu biliyorum. Ben de fsockopen ile bunu yapmak için bir yol görmedim, ama bir şey eksik olabilir.
  • Başka bir kitaplığa geçin. Ne bu destekler var?

Sunabileceğiniz herhangi bir yardım için teşekkür ederiz.

1 Cevap

Gibi,: Siz "Keep-Alive Bağlantısı" ayarı deneyebilirsiniz:

curl_setopt($process, CURLOPT_HTTPHEADER, array('Connection: Keep-Alive'));

Ya da bir ajax script kıvırmak çağrıyı koyarak olabilir.

SABUN ileri geri çok veri gönderir ve ben biçimlendirme veya SOAP XML Ayrıştırma ya en hafif ve verimli bugüne kadar herhangi bir PHP kütüphane bilmiyorum. . PHP kullanarak bir NET sunucu ile iletişim kurarken ben benzer bir sorun koştu ve (ya bu kesmek gibi olmaz) ben sonunda SOAP kullanarak durdu çok yavaş; Bunun yerine, ben sadece kıvrılma yoluyla veri yayınlanmıştır ve ben SimpleXML kullanarak gerekli tepkinin yalnızca bölümlerini çözümlü.