我在PHP中构建一个项目,系统向另一个域发送curl
请求以处理查询。例如。 http://domain.com/process_query?q=abc
。 process_query
控制器对一组文件执行查询,并以下列格式返回各个文件的摘要结果。
[
array('filename' => "one.dat", 'summary_counts' => 5),
array('filename' => "two.dat", 'summary_counts' => 30),
array('filename' => "three.dat", 'summary_counts' => 4),
array('filename' => "four.dat", 'summary_counts' => 70),
array('filename' => "five.dat", 'summary_counts' => 0)
]
然后由系统捕获,该系统发送卷曲请求并在屏幕上呈现它。我希望以渐进的方式做到这一点。就像,只要process_query
控制器完成处理文件,就应该能够echo
响应[array('filename' => "one.dat", 'summary_counts' => 5)
]并继续处理下一个文件。如果可以,则对于收到的每个响应,系统都可以显示渐进式查询处理。可以使用PHP-curl
来实现。如果不是最好的替代方式是什么?
答案 0 :(得分:0)
是的,这是可能的。有一个库https://github.com/stil/curl-easy访问这个gitHub库并查看有关如何实现它的文档!
希望它有所帮助: - )
答案 1 :(得分:0)
可能有一些像Rafique所提到的工具通过并行运行curl请求来帮助提高性能,尽管如果你的主要目标是在运行任务的每个步骤后发送进度报告,你可以简单地{{1}然后echo
对浏览器的响应。
这是一个超级简单的脚本,演示了通过脚本部分地将内容刷新到浏览器的能力:
flush()
当您从<?php
echo "1\n";
ob_flush();
flush();
sleep(1);
echo "2\n";
ob_flush();
flush();
sleep(1);
echo "3\n";
这样的命令行访问此内容时,您会看到数字彼此相差一秒钟,显示为1,2,3。
您可以将此技术与AJAX结合使用,从您的网页触发长时间操作,然后在页面上显示某种进度/状态更新。您可能需要挂钩onprogress事件(see this thread),否则您可以在iframe中触发它并逐步查看输出显示(确保填充它as discussed here)。