Salesforce/PHP-一括送信メッセージ(ソープ)でしかできない発見の更新#2
-
20-09-2019 - |
質問
Salesforceを送信でき100要求の内1SOAPメッセージ。を送信する場合はこのタイプのバルクOoutboundメッセージ要求私のPHPスクリプトの実行が終了でSFに失敗したのACK使のメッセージキューのセールスフォース側にはなりえない。の送信メッセージのログを監視いたように、これまでとは違ったすべてのメッセージの保留状態の送達失敗の理由"java.います。SocketTimeoutException:読み時間となります。う場合のスクリプトが実行しょう。
しかしこれらの方法の実行時に自分のサーバとしていないアクセスは、Salesforceの側:
- set_time_limit(0);//のスクリプト
- max_execution_time=360;最大実行時間のスクリプトを秒で指定
- max_input_time=360;最大の時間毎にスクリプトが過ご依頼データ解析
- memory_limit=32M;最大メモリ量のスクリプトが消費
を使用した高い設定で試験をします。
意思い理由としては、これは失敗のACK配送り返Salesforce?
こちらのコード:このようにのんびりと受け入れのACKファイルのimcoming SOAPリクエ
$data = 'php://input';
$content = file_get_contents($data);
if($content) {
respond('true');
} else {
respond('false');
}
の対応機能
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);
}
これらは汎用のスクリプトとし、スクリプトを使用するデータを特定のワークフロー.まで約25要求(その1SOAP)ただくこれを取得しますタイムアウトエラー、Salesforceのキューに挿入しますのための50の要求は、通常、私のPHPスクリプト86.77秒です。
これはApache?PHP?
また試験で受け入れ、100請求SOAPでの受入れ及び送信のACKのキューをクリアし、なんで私の側にいます。
示に誤りがないかをチェックapacheのログには、スクリプトを走る。
かったかの情報をSalesforceサイトがまだない。こちらは リンク.
ものを使っているPHPのツールキット11からSalesforce).
感謝意見、 --Phill
更新:
いを受ける受信メッセージや印刷の対応は、こうずい場合、その何かも待っ工程の仕上げとその後に印刷します
更新#2:
大丈夫だと思い思いの問題:PHP用の単一のスレッドの処理いたしませんのACKファイルまで、スレッドは完了です。があるので、このタスレッドですか?スレッド#1-受入ソープの要請および返送のACK レストラン#2プロセスのSOAPリクエ
思いが休みで入などのDBテーブルまたはフラットファイルがあるので、そのためになった。
私のソケット後のACK提出後の処理に、クロス指します。
解決 5
うっは:
- 受け入れは全ての着信OBM、構文解析して、DB
- こうしたことを考慮することでキックのプロセスのバックグラウンドでも動作するの実を送りたいので、背景のスクリプトで終了)
- 送ACKファイルのバック
より受け入れの生データの解析の分野に入れてくれるといDBはかなり迅速にできます。その問題は、Linuxコマンドラインのコマンドが送信処理を実行するスクリプトです。それにして送ACKファイルのストラクチャーやスクリプトを終了競合他社の峻別、収集します。ってしまうと厄介で分割を行スクリプト処理は、特別の段階でも動きます。
他のヒント
音声の送信メッセージを打つタイムアウト.他のユーザーを報告してタイムアウトなど10秒(フォーラムリンク。のサンドボックスインスタンスを使う(cs1)はタイミングをした後、約1分、私の試験をします。まれてくる可能性があることで、タイムアウトが組織またはインスタンスレベル設定がSalesforceます。
二んでいることが試み:
開支援のチケット付 Salesforceを参照できない場合 の増加、タイムアウト値 送信メッセージから 経験が多いので 設定を変更するには 組織レベルであ そのひとつ。
オフロ加工のデータであり、 このACKを送りすぐ バSalesforce.その後、実際の 製品についての情報データか 場所は非同期.ります。メッセージ キューとは別のスレッドなど。
その他の資源書を発行することも可能:
いのタイムアウトをもっとスクリプトです。
あみみをすますプロジェクトが修理を試みます。
出力は、封筒の表にackのメッセージでは、それまでなかなかフラッシュのものにするようにサーバができ終処となります。糸、優先事項を再考:)
ま100%とSalesforceまでの期間はスクリプトの必要も。80秒のように聞こえるかもしれないがloong時過ぎました。
すべての要求に失敗したものではないでしょうかをSalesforceを期待する Content-Type
ヘッダの適切なもするものではありません。
知らないSalesforceのものにしたい場合は、一部のmultithreading PHPするべき このコード例 より精密に pcntl_fork().
N.B:pcntlは ない デフォルトで有効になるようにな作業のプラットフォーム.