PHP 无需等待即可执行外部脚本,同时传递变量

Kri*_*our 4 php shell

我正在为我的用户创建一个功能,他们可以上传大型 XML 文件以与我的数据库同步。

当用户将文件上传到 时upload.php,我想开始在后台处理数据process.php,最好是通过 shell 命令,并将用户重定向到status.php,这显示了同步的过程。

我需要process.php在执行脚本时将一些变量传递给脚本,至少一个带有用户 ID 的变量并将其他变量放入文本文件中(可能更喜欢这样做,这样我就不必在命令中放入太多数据exec()。 ) 或用户 ID 和一堆$_POST变量。

我想到的一种解决方案是执行如下 PHP 脚本:

exec("php -f ./process.php > /dev/null 2>/dev/null &"); 
Run Code Online (Sandbox Code Playgroud)

这允许我锁定 process.php 的 http 访问,这很好,因为它是一个采用脚本的进程。我在这里唯一需要的是以某种方式传递一个变量,但我不知道该怎么做。

所以我的主要问题是:

如何在上述解决方案中传递变量?

或者你们有更好的解决方案吗?可能是我不需要经历的地方exec()?请记住,我不希望用户等待脚本执行,并且我需要传递至少一个变量。

更新:为了将来参考,请记住在通过参数或类似函数传递参数时使用escapeshellarg()exec()

小智 5

你测试使用它

exec("php -f ./process.php var1 var2 > /dev/null 2>/dev/null &"); 
Run Code Online (Sandbox Code Playgroud)

如果您喜欢获取这些变量值,可以使用全局变量 $argv 访问。如果你打印这个 var 显示相同:

print_r($argv);


Array
(
    [0] => process.php
    [1] => var1
    [2] => var2
)
Run Code Online (Sandbox Code Playgroud)