【发布时间】:2012-03-26 15:51:45
【问题描述】:
我在 cakephp 的控制器中有一个函数,它可能会运行数千秒。该功能基本上有一个链接列表,并联系几个 API 以从中获取各种 SEO 数据。所以每个链接可能需要几秒钟。
我一直在尝试设置一个蛋糕壳来为我做这件事,但没有运气。我最接近的是让这个 bash 脚本运行带有参数的所需 shell(在本例中为 30,它是系统上用户的 id。)
/home/linkmoni/public_html/cake/console/cake -app /home/linkmoni/public_html/app updateuserlinks 30 > update3.txt 2> update3.err &
然后从我的控制器中调用此脚本
$result = exec("sh update_links.sh > update2.txt 2> update2.txt");
现在,如果我 ssh 进入我的服务器并直接从那里运行它,那么 bash 脚本就可以工作了。所有链接都正确更新,一切都很好。从 php exec 运行时似乎有问题。据我所知,这与用户登录的要求有关。
运行上述代码后,在 update3.txt 中找到唯一的文本
Status: 302 Moved Temporarily
X-Powered-By: PHP/5.2.17
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Location: http://linkmoni.com/~linkmoni/links
Content-type: text/html
在我达到这一点之前,我尝试使用 wget 和会话 cookie,它们在某种程度上有效,但需要特定用户的登录凭据。这样做的原因是它绕过了系统登录,但我无法让它访问任何模型数据。
有人知道我怎样才能让它工作吗?基本上我想做的就是在后台运行这个长函数,同时可以访问 cakephp 模型。
谢谢大家!
【问题讨论】:
-
你用的是哪个蛋糕版本?
标签: php shell cakephp background