我想从另一个PHP脚本运行PHP脚本,以便父级在启动子脚本时返回成功。
将从我正在使用会话的浏览器启动父级。如果通过exec运行,子脚本是否能够使用相同的会话和会话变量?
感谢大家的帮助
我通过AJAX解雇了父母。在我这样做之后,我希望父母带着孩子跑回来。子脚本需要一段时间才能完成。父级将返回成功以指示它已运行子级。然后,用户将被重定向到不同的页面。
答案 0 :(得分:2)
如果您想从PHP脚本运行PHP脚本,请不要这样做:
require 'child.php';
如果您需要在后台执行某些操作,请使用AJAX触发请求。
编辑:没有理由说AJAX请求不能长时间运行,但是你已经超出了PHP真正设计的范围。但无论如何,发起一个AJAX请求。如果回来需要20分钟,这不是戏剧性的。
或者,您可以每15秒触发一次AJAX请求(选择一个号码)以检查您已经开始的状态。
对于真正长期运行的任务,你可能不得不采取“一见不醒”的方法。启动它并立即返回。但它不会有会话信息。你需要存储它。
我建议使用某种持久性机制,如Jobs表:
而不是像exec()那样解雇这些工作,而是有一个cron作业,它寻找需要启动并启动它们的作业。这将不如Web服务器触发的方法脆弱。
您还可以获得状态报告,以便能够询问作业是否已完成。
答案 1 :(得分:2)
与其他人说的一样,它不会起作用。
但是,你可以ignore_user_abort( true );
即使用户关闭浏览器,这也会使脚本继续运行。
所以,ignore_user_abort,在父级中包含大量的子脚本,这样你就可以获得会话变量和所有内容,你应该没事。
答案 2 :(得分:-1)
答案是否