【发布时间】:2018-02-05 06:04:35
【问题描述】:
我正在尝试从另一个脚本中执行一个 php 脚本。第一个脚本的输出不依赖于第二个脚本,第二个脚本需要一段时间才能执行,所以我在第一个脚本中使用 exec 命令来运行第二个脚本,并在该行后面加上一个 &第二个脚本在后台运行。
exec('php /path/to/secondScript.php > /dev/null 2> /dev/null &');
我知道使用 exec 命令存在固有的安全风险。我现在很好,因为我没有使用任何用户输入。
我的问题是我想将对象 $object 传递给第二个脚本。我怎样才能做到这一点?我试过了:
exec('php /path/to/secondScript.php $object > /dev/null 2> /dev/null &');
并在第二个脚本中使用:
$argv[0];
但它返回为空。
我尝试将 exec 行修改为:
exec("php /path/to/secondScript.php $object > /dev/null 2> /dev/null &");
但这导致脚本失败。
既然$object是一个对象,我需要先把它转成字符串吗?
【问题讨论】:
-
是的,您需要通过使用
$object = serialize($object);序列化对象来转换为字符串 -
谢谢,这肯定有帮助。我将其更改为
$objectString = serialize($object); exec('php /path/to/secondScript.php '.$objectString.' > /dev/null 2> /dev/null &');如果 $object 是像 'test' 这样的字符串,它可以工作,但如果 $object 是一个大的多维对象,它就不会运行。 -
即使是大对象也能正常工作,请向我们展示您尝试执行的对象示例
标签: php command-line