【问题标题】:Pass Object Via Command Line For PHP通过命令行为 PHP 传递对象
【发布时间】: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


【解决方案1】:

将对象序列化为字符串,然后尝试

$object = serialize($object);
exec("php /path/to/secondScript.php $object > /dev/null 2> /dev/null &");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 2016-07-21
    • 2011-10-20
    • 2014-10-17
    • 2014-11-05
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多