【问题标题】:How can I run composer post-install command in background?如何在后台运行 composer post-install 命令?
【发布时间】:2019-06-26 04:06:05
【问题描述】:

如何在作曲家脚本的后台运行命令并转到下一个命令。我尝试了类似下面的方法,但它仍然挂起,直到 chgrp 命令完成并且不执行下一个命令。

composer.json

"post-install-cmd": [
            "sh ./scripts/composer/post-install.sh"
 ],

安装后.sh

#!/bin/sh

set -ex

echo "Setting appropriate permissions"
nohup chgrp -R www web &
echo "Executing next command"

【问题讨论】:

  • “很多时间”有多长? web 目录中有多少东西?
  • 我的脚本中还有其他事情要做。这只是脚本的一个小sn-p。所以让我们不要考虑时间而是如何在作曲家脚本中实现它?
  • 我的个人资料应该清楚地表明我能够回答问题。我在问澄清问题,以便我能提供最好的帮助,因为可能有比您尝试做的更好的方法。如果你拒绝回答,我和其他人就更难帮助你了。
  • 可能这个评论“我在问澄清问题,所以我可以最好地提供帮助,因为可能有比你想要做的更好的方法”肯定会迫使我回答你的问题。不需要对这个问题投反对票。没想到这些知名人士会否决一个有效的问题。
  • 1.谁对不公开的内容投了反对票。你在做假设。 2. 我试图解释我为什么提出澄清问题。我怀疑使用 ACL 会比 chgrp 更有效,但如果您在 web 中只有几百个文件,并且需要几分钟,这表明正在发生其他事情。因此提出了问题。

标签: php composer-php background-process nohup


【解决方案1】:

PHP 是单线程的,所以运行 composer 会锁定它,直到进程完成,这意味着当它运行你的 shell 脚本时它仍然“忙”,因为它会等待它完成。

但是,它可以进行多线程处理,但只能从 CLI 进行,它对您没有帮助,因为您将从一开始就从 composer 开始程序。

查看this question and answers,看看它是否适合您的用例。

【讨论】:

    猜你喜欢
    • 2019-07-12
    • 2019-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 2021-07-04
    • 2015-07-31
    相关资源
    最近更新 更多