PHP erken soap yanıtı göndermek?

0 Cevap php

Peki bu ben ile uğraşan ve hala hiçbir çözüm, yani yeni bir yaklaşım çalışıyorum eski bir konudur.

(Betik çalıştırma sona ermeden önce) Nasıl erken inci soap yanıtı gönderebilir?

Süreç, daha sonra ayrılan zaman tamamlanması daha uzun sürer gibi ACK dosyası 30 saniye önce gönderilen değilken Bu sorunlar nedenidir.

(floş) çalışmıyor, bu hatayı alıyorum:

eşleşmelidir.org.XML.sax.SAXParseException: XML belge yapıları başlamak ve aynı varlık içinde bitmelidir.

floş olmadan () Ben bu olsun

eşleşmelidir.org.XML.sax.SAXParseException: dosya sonu.

Komut işlemi devralma 180 saniye tamamlamak için ve yanıt bekliyor sunucusu yalnızca (yukarıdaki hata neden Hangi) aşımından önce yaklaşık 30 saniye bekleyin.

Ben bu nasıl düzeltebilirim gibi herhangi bir düşünce?

Bu kabul ve imcoming soap isteği için ACK dosya göndermek nasıl: İşte bazı kod olduğunu

$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); 
}

PHP tek bir iş parçacığı işleme yaklaşımı kullanır ve iş parçacığı işleme oluyor tamamlayana kadar ACK dosyayı geri göndermez. Bu yüzden gönderme sunucusuna bu zaman aşımı sorunları alamadım ACK sunulmasından sonra yuva kapatın ve işleme devam etmek için bir yol var mı?

0 Cevap