1
私はPHPを使ってJavaクライアントを実行しようとしています。これはXMLを別のサーバに送ります。応答を受信するには、通常は約10〜30秒かかります。私がPHPを実行すると、読み込み時間がないので、応答が受け取られる前に残りのコードが実行されると思っています。私は、返信応答をブラウザに表示させ、同じディレクトリ内の別のXMLに書き込もうとしています。これは起こりません。新しいXMLが作成されますが、空です。 結果ハンドラの問題
$output = shell_exec("java SOAPClient4XG http://turbolink.turbo-marketing.net:8180 getList.xml");
sleep(30);
echo $output;
$filename = "getListResult";
$filename .= ".xml";
$fp = fopen($filename, 'w');
fwrite($fp, $output);
fclose($fp);
は、私は、javaに
$output
に値を渡す前に終了する機会を与えるために
sleep(30)
を追加しましたが、それは解決しません。コマンド
java SOAPClient4XG http://turbolink.turbo-marketing.net:8180 getList.xml"
が機能します。私はそれをSOAP UIとPUTTYを使ってディレクトリで実行しました。私が受け取る出力はXML/SOAP形式で、これである:$出力がオンに移動する前に、いくつかの値を持ってまで、私は待つことができる方法は
<?xml version="1.0" encoding="utf-8" ?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Body>
<n1:getListsResponse xmlns:n1="urn:Turbolink"
env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<getListsResult xsi:type="n1:getListsResult">
<responseMessages n2:arrayType="n1:responseMessage[1]"
xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="n2:Array">
<responseMessage>
<code xsi:type="xsd:string">0</code>
<message xsi:type="xsd:string">No Error</message>
</responseMessage>
</responseMessages>
<dataLists xmlns:n3="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="n3:Array"
n3:arrayType="n1:dataList[5]">
<dataList>
<listID xsi:type="xsd:string">CVPLUS </listID>
<listDescription xsi:type="xsd:string">ConsumerVision Plus</listDescription>
<listVersion xsi:type="xsd:integer">94</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">MORTHOT </listID>
<listDescription xsi:type="xsd:string">Mortgage Hotlines</listDescription>
<listVersion xsi:type="xsd:integer">206</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">MRTGBASE</listID>
<listDescription xsi:type="xsd:string">Mortgage Base</listDescription>
<listVersion xsi:type="xsd:integer">94</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">SUPERNEW</listID>
<listDescription xsi:type="xsd:string">American New Movers Plus</listDescription>
<listVersion xsi:type="xsd:integer">171</listVersion>
</dataList>
<dataList>
<listID xsi:type="xsd:string">TSEBUS </listID>
<listDescription xsi:type="xsd:string">TSE Business File</listDescription>
<listVersion xsi:type="xsd:integer">38</listVersion>
</dataList>
</dataLists>
</getListsResult>
</n1:getListsResponse>
ありますか? isset($output)
を条件付きにすると、変数が設定されないことがわかります。私は条件付きでshell_exec()
を再度呼び出してみましたが、何も得られません。
*編集:サーバーにIP制限があるため、このコードをマシン上で実行しようとしてもまったく同じ動作をしません。あなたはエラー応答を得るでしょう。
これはQuercusで実行していますか? – Bitmap