控制PHP中不同脚本之间的app流程

时间:2009-10-06 20:53:57

标签: php scalability

我有一个php脚本,它接受一个POST请求作为Web服务的监听器,然后将所有数据处理成两个最终数组, 我正在寻找一种方法来启动第二个脚本,即GET的那些序列化数组并进行更多处理。 include()对我不好,因为我实际上想在传递数据后“释放”或“结束”第一个脚本

你的帮助一如既往地受到赞赏:)

编辑 - 好吧看起来像队列可能是解决方案!在任何例子或参考之前,我从未做过这样的事情吗?

3 个答案:

答案 0 :(得分:2)

是否需要立即进行?否则你可以设置一个每X分钟执行一次的cronjob。您必须创建某种队列,其中您的第一个脚本将“请求”粘贴到第二个脚本。然后,cronjob处理队列中的请求。

答案 1 :(得分:1)

你应养成编写php脚本的习惯,这些脚本只是一组函数(本身没有自动运行脚本)。这样你就可以在你所谈论的脚本顶部包含一个脚本文件,然后调用你想要的功能。

例如:

<?php
include('common_functions.php');
$array_1 = whatever_you_do_with_post_values();
$array_2 = other_thing_you_do_with_post_values();
// this function is located in 'common_functions.php'
do_stuff_with_arrays($array_1,$array_2); 
?>

事实上:

只是为了与我所说的一致:

<?php
include('common_functions.php');
do_your_stuff();
function do_your_stuff() {
    $array_1 = whatever_you_do_with_post_values();
    $array_2 = other_thing_you_do_with_post_values();
    // this function is located in 'common_functions.php'
    do_stuff_with_arrays($array_1,$array_2); 
}
?>

显然你应该使用更好的功能&amp;变量名,哈哈。

答案 2 :(得分:0)

我会在一个请求中完成所有操作。它减少了延迟并使整个操作更加高效。

请记住,您可以拥有长时间运行的请求,但仍可以为其他请求提供服务。 Apache将生成另一个php进程来处理来自webservice的其他请求,即使第一个请求尚未完成。只要脚本没有锁定共享资源(数据库文件等),这将正常工作。

也就是说,您应该使用cURL来调用第二个脚本。然后发布未序列化的数组。 cUrl将处理剩下的事情。