0

我有调用 SOAP 请求到远程服务器的 PHP 代码。远程服务器处理 SOAP 请求,然后我可以获取结果。

理想情况下,我想调用 SAOP 请求,等待 5 秒,然后去寻找结果。原因是远程服务器需要几秒钟来完成它的处理。我无法控制远程服务器。

目前我有这个代码:

$object = new Resource_Object();
$identifier = $_GET['id'];
$object->sendBatch($id));
sleep(5);
$results = $object->getBatchReport();
echo $results;

上面代码的问题是 sendBatch 需要几秒钟才能完成。添加sleep(5)后,页面加载时间增加了 5 秒,但仍然没有显示结果。如果我再次加载页面,或者从另一个页面调用getBatchReport(),结果就在那里。

我想这与导致整个页面立即执行的 HTML 的无状态有关。我考虑过使用“输出缓冲”,但我真的不明白输出缓冲的用途。

我也在考虑使用 jQuery 和 Ajax 来不断地轮询 getBatchReport(),但问题是我需要从另一个位置调用此页面,并且随着sendBatch()的增长,5 秒的延迟可能会增加,大概到 2 分钟左右。如果我远程调用此页面,我认为 Ajax 将无法工作(此页面已在 /dev/null 2>&1 &生成的后台调用 )。

我无法控制 sendBatch 例程中指定的远程服务器,据我所知,它没有任何回调函数。我宁愿不使用 CRON,因为这意味着我必须一直查询远程服务器。

有任何想法吗?

4

1 回答 1

0

当我认为 5 秒就可以完成这项工作时,我过于乐观了。重新测试后,我发现实际上 15 秒是一个更现实的值。它现在正在工作。

于 2010-12-16T17:24:16.343 回答