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

标签 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 &"); 

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

所以我的主要问题是:

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

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

更新:为了将来引用,记得使用escapeshellarg()通过 exec() 或类似函数传递参数时。

最佳答案

你测试使用它

exec("php -f ./process.php var1 var2 > /dev/null 2>/dev/null &"); 

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

print_r($argv);


Array
(
    [0] => process.php
    [1] => var1
    [2] => var2
)

关于PHP无需等待即可执行外部脚本,同时传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720547/

相关文章:

bash - 如何在 awk 脚本中使用 shell 变量?

shell - 在 gradle 中运行 shell 命令但不在任务中

linux - 脚本编写 - 使用 While 循环迭代数字(newusers 命令)

php - SQL错误: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax

PHP 准备好的语句不起作用

javascript - 我正在尝试将背景图像源更改为输入到表单框中的 url

shell - 在shell中转换为大写

php - 从存储文件夹下载的 Laravel 文件损坏

php - 我怎样才能简化这个 php mysql count 代码并减少查询?

mysql - Shell 脚本 - 下载文件 - Mysql 替换