首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:在后台运行部分代码

PHP:在后台运行部分代码
EN

Stack Overflow用户
提问于 2012-06-16 16:47:36
回答 5查看 403关注 0票数 0

我正在使用Facebook SDK在时间线上发布一些事情。问题是,API请求通常需要2-3秒,这会减慢我的网站速度,特别是因为我有很多ajax请求。

有没有办法把一部分PHP代码派生到后台?我希望所有的全局、会话等都保持不变。

EN

回答 5

Stack Overflow用户

发布于 2012-06-16 17:07:09

你可以使用PHP exec()来执行一个单独的PHP脚本。

代码语言:javascript
复制
$cmd = "php5 -q /path/to/php/send_fb_request.php";

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));

然后,如果您想要监视进程是否仍在运行:

代码语言:javascript
复制
function isRunning($pid){
    try{
        $result = shell_exec(sprintf("ps %d", $pid));
        if( count(preg_split("/\n/", $result)) > 2){
            return true;
        }
    }catch(Exception $e){}

    return false;
}
票数 2
EN

Stack Overflow用户

发布于 2012-06-16 17:03:12

如果可能的话,我会为它创建一个队列,并从队列中执行那些耗时的问题,而不是从http进程中为您的网站生成和处理web请求。

这样你就有了完全的控制权,甚至可以将它与其他服务器分开,这是解决这类问题的最常见的解决方案。

您最好使用真正的队列解决方案,但我也看到很多简单的MySQL解决方案在项目规模较小的情况下仍然有效。点击此处了解更多信息:http://www.engineyard.com/blog/2011/5-subtle-ways-youre-using-mysql-as-a-queue-and-why-itll-bite-you/

还检查了我们的一些队列,它还允许一些API可能发生的诸如速率限制、日志记录和测量之类的事情,好的是它将创建post和与外部方的实际处理分开,从而提供了一个中央控制点和代码分离。

票数 1
EN

Stack Overflow用户

发布于 2012-06-16 17:13:45

听起来你想要异步PHP。本文很好地解释了一种技术:http://petewarden.typepad.com/searchbrowser/2008/06/how-to-post-an.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11062022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档