亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何記錄第一個命令的輸出然后在 PHP 中執行下一個命令?

如何記錄第一個命令的輸出然后在 PHP 中執行下一個命令?

PHP
大話西游666 2022-07-22 15:58:55
我有命令執行 PHP 函數并將輸出寫入日志文件,成功后我想運行下一個命令,該命令應該發送有關第一個命令狀態的電子郵件。例如$nextCommand = 'php _protected/yii xyz-integration/job-status-email ' . $processId . ' >'.realpath(Yii::$app->basePath) . '/../../uploads/second_log.log 2>&1 & echo $!';$command = 'php _protected/yii xyz-integration ' . $processId . ' >'.realpath(Yii::$app->basePath) . '/../../uploads/first_log.log 2>&1 & echo $! && '.$nextCommand;exec($command, $output);通過這樣做,我可以回顯php _protected/yii xyz-integration ' 的輸出。$processId 。'到realpath(Yii::$app->basePath) 。'/../../uploads/first_log.log .但是在運行這個過程之后,我想發送一封關于第一個命令狀態的電子郵件?,F在,我的狀態為In-Progress ,這意味著$nextCommand在第一次完成執行后沒有得到執行(在我的情況下,我想要的狀態應該是成功或失敗,由第一個命令在數據庫中更新)。如果我刪除 & echo $! 那么它不會將輸出/錯誤記錄到必要的日志文件中。
查看完整描述

2 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

此代碼段應該2>&1 & echo $! &&2>&1 && echo $! &&(查看&.&1

原因是最后只有一個&字符,命令會在后臺運行并立即返回。這樣您的第二個命令就會在第一個命令尚未完成時啟動。


查看完整回答
反對 回復 2022-07-22
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

這是我為解決該問題所做的代碼更改。


$nextCommand = 'php _protected/yii xyz-integration/job-status-email ' . $processId . ' >'.realpath(Yii::$app->basePath) . '/../../uploads/second_log.log 2>&1 & echo $!';

$command = 'php _protected/yii xyz-integration ' . $processId . ' >'.realpath(Yii::$app->basePath) . '/../../uploads/first_log.log 2>&1 ';

exec($command .' ; '. $nextCommand); 

出于可讀性目的,我已將命令分配給變量并使用';' 我已經一個接一個地執行了這兩個命令。


查看完整回答
反對 回復 2022-07-22
  • 2 回答
  • 0 關注
  • 146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號