我正在为我的用户创建一个功能,他们可以上传大型 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)
| 归档时间: |
|
| 查看次数: |
4421 次 |
| 最近记录: |