在为最终用户加载页面之前,如何在不等待完成的情况下执行PHP脚本?

在为最终用户加载页面之前,如何在不等待完成的情况下执行PHP脚本?,php,ajax,Php,Ajax,我正在开发一个网站插件,它利用YouTube API获取特定频道的一些数据。问题是,在较大的频道上加载代码需要几秒钟,这意味着用户必须等待相当长的一段时间,脚本才能完成加载,然后才能查看每个页面。大多数情况下,检索到的数据甚至与它们无关,但脚本仍需要运行其检查。那么,如何在用户不必等待的情况下初始化PHP脚本呢 我的第一个想法是使用AJAX并向远程脚本发出请求,但这会导致脚本运行时页面的某些部分挂起吗?我不需要脚本的结果,我只需要脚本运行并完成它自己的事情。您可以使用exec启动一个单独的PHP

我正在开发一个网站插件,它利用YouTube API获取特定频道的一些数据。问题是,在较大的频道上加载代码需要几秒钟,这意味着用户必须等待相当长的一段时间,脚本才能完成加载,然后才能查看每个页面。大多数情况下,检索到的数据甚至与它们无关,但脚本仍需要运行其检查。那么,如何在用户不必等待的情况下初始化PHP脚本呢


我的第一个想法是使用AJAX并向远程脚本发出请求,但这会导致脚本运行时页面的某些部分挂起吗?我不需要脚本的结果,我只需要脚本运行并完成它自己的事情。

您可以使用exec启动一个单独的PHP脚本。最后加上&将使exec立即返回

让script.php做一些繁重的工作,然后从一个购物中心脚本调用它,如下所示:

exec("php script.php > /dev/null &");
您需要一个*nix服务器环境。不要认为它能在Windows平台上工作。

AJAX代表异步JavaScript和XML,这意味着在使用它时,其余代码的执行不会被阻止


您可以对要执行的脚本发出AJAX请求,然后继续正常呈现页面。AJAX请求将在后台执行,不会造成任何干扰

您可以使用忽略用户中止;此外,请确保在页面开头关闭会话(如果有)。否则,您将保留一个锁定,这将阻止用户启动新请求。@DarkBee我将在哪里关闭会话?这是WordPress插件的一部分,关闭会话会干扰WordPress的其他部分吗?或者我可以只为我正在调用的脚本关闭会话吗?在您正在使用的脚本中ajax@DarkBee好的,用AJAX调用脚本,忽略用户中止,然后关闭会话,这无关紧要,因为它是通过AJAX调用的。知道了!