如何在backgrond中启动另一个PHP脚本?

如何在backgrond中启动另一个PHP脚本?,php,curl,logic,Php,Curl,Logic,这是一个场景: 用户在登录时单击 Login.php运行(完成后,使用header()重定向) updater.php需要在Login.php之后在后台运行 用户可以在Login.php之后使用网站 updater.php需要大约5分钟来完成运行,这就是为什么它与login.php分开,这也是为什么它需要在login.php之后在后台运行,同时用户可以自由使用网站的大部分内容(updater.php完成后的剩余部分)。我不能使用include(),因为这将暂停login.php,并且在upd

这是一个场景:

  • 用户在登录时单击
  • Login.php运行(完成后,使用header()重定向)
  • updater.php需要在Login.php之后在后台运行
  • 用户可以在Login.php之后使用网站
updater.php需要大约5分钟来完成运行,这就是为什么它与login.php分开,这也是为什么它需要在login.php之后在后台运行,同时用户可以自由使用网站的大部分内容(updater.php完成后的剩余部分)。我不能使用include(),因为这将暂停login.php,并且在updater.php完成之前不会将用户重定向回。。我在include之前读过关于使用Header()的内容,但有时它似乎没有运行完整的updater.php脚本(有时在停止之前只运行40%或50%)

我想我可以使用CURL来激活脚本,而不影响login.php的加载时间

处理这个问题的最佳方法是什么? 如果有什么不合理的地方,请告诉我


谢谢。

如果您不介意执行结果,您可以使用

exec(“nohup-php./update.php>/path/to/save/log 2>/path/to/error\u log&”)

为什么
updater.php
需要在
login.php
之后运行?为什么
login.php
不能只包含相同的功能,或者使用
include()
?此外,脚本运行时间不应超过5分钟。这可能比让一个脚本在另一个脚本之后运行更重要。至于实际的应用程序,您可以使用AJAX或cron作业。@为了简单起见,ObsidManager设想登录只是一个简单的select*db,其中user='account'和pass='internal',如果凭据匹配,则创建会话。完成此登录后,更新程序使用api从另一个服务检索大量帐户数据,并将其上传到帐户信息表中。使用webhook会很理想,但其他服务不是我的!现在,假设您有这种情况,而更改updater.php不是解决方案。@jerome使用AJAX比使用CURL有优势吗?AJAX绝对不是解决方案,请参见下面的答案。请原谅我的无知,执行结果是什么意思?您的问题似乎已经得到了很好的解释。您好,这似乎对我不起作用。
exec(“Functions/update.php>/dev/null&”)我在浏览器上打开了它,它工作正常。有什么问题吗?