Salesforce 1 SABUN mesajın içinde 100 istekleri gönderebilirsiniz. Toplu Ooutbound bu tür bir ileti gönderirken benim PHP komut dosyası yürütülmesi tamamlandığında ancak SF ACK şeylerin Salesforce tarafında mesajı kuyruğunu temizlemek için kullanılan kabul başarısız isteyin. Giden mesajı log (izleme) bakarak ben Teslim Arıza Nedeni ile bekleyen bir devlet tüm iletileri görmek "java.net.SocketTimeoutException: Okuma aşımına uğradı". Benim komut yürütme bitmiş varsa, neden bu hatayı alıyorum?
Ben Salesforce tarafında erişimi yok gibi benim sunucuda yürütme süresini artırmak için bu yöntemleri denedi:
- set_time_limit (0); / / Komut
- max_execution_time = 360; Saniye içinde her komut Maksimum yürütme zamanı,
- max_input_time = 360; Her komut isteği verileri ayrıştırma harcayabileceğiniz zaman maksimum miktarı
- memory_limit = 32M; Bir komut dosyası tüketebilir azami bellek miktarını
Ben sadece test için yüksek ayarları kullandım.
Herhangi bir bu geri Salesforce ACK teslim başarısız neden olarak düşünce?
Here is some of the code: This is how I accept and send the ACK file for the imcoming SOAP request
$data = 'php://input';
$content = file_get_contents($data);
if($content) {
respond('true');
} else {
respond('false');
}
Cevap fonksiyonu
function respond($tf) {
$ACK = <<<ACK
<?xml version = "1.0" encoding = "utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<notifications xmlns="http://soap.sforce.com/2005/09/outbound">
<Ack>$tf</Ack>
</notifications>
</soapenv:Body>
</soapenv:Envelope>
ACK;
print trim($ACK);
}
Bunlar, belirli bir iş akışı için verileri kullanan komut dosyası içeren genel bir komut vardır. Ben Salesforce kuyrukta zaman aşımı hatası alıyorum üzerine gitmek keresinde yaklaşık 25 istekleri (1 SOAP yanıt That) ama işleyebilir. 50 istekleri için genellikle benim PHP komut dosyası 86.77 saniye sürer.
O Apache olabilir mi? PHP?
Ben de sadece 100 istek SOAP yanıtı kabul ve sadece kabul ve ACK sıra temizler göndererek test ettik, bu yüzden şeyler benim tarafımda olduğunu biliyorum.
Ben apache günlüğünde hataları göstermek, senaryo iyi çalışır.
Ben Salesforce sitedeki bazı bilgiler, ancak hala şans buldum. İşte the link.
Ayrıca ben (Salesforce itibaren) PHP Toolkit 11 kullanıyorum.
Thanks for any insight into this, --Phill
GÜNCELLEME:
Ben gelen mesajı almak ve yanıtı yazdırmak Eğer ben sonra başka bir şey yaparsanız, bu ilk bağımsız gerçekleşmesi gerekir? Benim süreci tamamlamak ve daha sonra yanıtı yazdırmak için ya da beklemek nedir?
GÜNCELLEME 2:
okay I think I have the problem: PHP uses the single thread processing approach and will not send back the ACK file until the thread has completed it's processing. Is there a way to make this a mutli thread process? Thread #1 - accept the incoming SOAP request and send back the ACK Thread #2 - Process the SOAP request
Ben DB tablo veya düz dosya gibi bölmek olabileceğini biliyorum, ama bu yapmadan bunu gerçekleştirmek için bir yol var?
Ben ACK sunulmasından sonra yuva kapatın ve işleme devam, bu iş olacak benim parmak geçmeye denemek için gidiyorum.