簡體   English   中英

使用自定義artisan命令的Envoyer部署失敗

[英]Envoyer Deployment with custom artisan command fails

我在使用envoyer部署我的項目時遇到問題,該執行器執行我創建的工匠命令。

該命令獲取我的所有用戶,執行另一個工匠命令( $this->call('command') )並通過遍歷所有用戶來執行它的操作。

問題在於:

    foreach($usernames as $username) {
        shell_exec('php ' . base_path('artisan') . ' command ' . $username . ' > /dev/null 2>/dev/null &');
    }

此命令在后台啟動腳本。 它在沒有任何問題的情況下手動執行並且不會在超時結束(執行大約需要1秒),但在envoyer中它不會在部署步驟中停止運行並在超時時失敗,盡管它執行完美無瑕。

其他信息:
因為我在后台運行腳本的原因:
我開始的腳本打開一個套接字,他將全天候收聽,直到用戶手動取消它。

我剛剛創建了一個較小的示例,以確保它一切正常:

文件forever.php將每隔5秒保持一次無限循環打印:

<?php
while (true) {
  echo "I am still in the loop $argv[1]\n";
  sleep(5);
}

文件script.php將調用的多個實例forever.php從父進程(一樣的,你做了什么)分離:

<?php
for ($i = 0; $i < 5; $i++) {
  shell_exec("php forever.php $i > /dev/null 2>/dev/null &");
}

執行php script.php ,很明顯運行了forever.php的5個實例。 所以你的代碼似乎很好(你展示的部分)。

在你的案例中我唯一能想到的是:

  • 腳本在Envoyer上運行1秒太長了?
  • 您的循環是所有用戶的預告。 難道你在那個循環中生成了太多進程嗎? 你有多少用戶?
  • 你可以在執行之前打印你的命令,直接在終端上試一下,看看它是否一切正常?

希望它有所幫助,如果您需要更多幫助,請提供更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM