我有命令,從我執(zhí)行PHP函數(shù)并將輸出寫入日志文件,成功后,我想運行下一個命令,它應該發(fā)送有關(guān)第一個命令狀態(tài)的電子郵件。例如:$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 。' to the realpath(Yii::$app->basePath) .'/../../uploads/first_log.log.但是在運行此過程后,我想發(fā)送一封有關(guān)第一個命令狀態(tài)的電子郵件?,F(xiàn)在我的狀態(tài)為“進行中”,這意味著$nextCommand在第一次完成執(zhí)行后沒有執(zhí)行(在我的情況下,我想要的狀態(tài)應該是成功或失敗,它通過第一個命令在數(shù)據(jù)庫中更新)。如果我刪除 & echo $!然后它不會將輸出/錯誤記錄到必要的日志文件中。
2 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經(jīng)驗 獲得超6個贊
此代碼段應為(查看 后面的缺失字符)。2>&1 & echo $! &&
2>&1 && echo $! &&
&
&1
原因是最后只有一個字符,命令將在后臺運行并立即返回。以便在第一個命令尚未完成時啟動第二個命令。&

阿晨1998
TA貢獻2037條經(jīng)驗 獲得超6個贊
以下是我為解決此問題而進行的代碼更改。
$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);
出于可讀性目的,我已將命令分配給變量并使用';'我已經(jīng)一個接一個地執(zhí)行了這兩個命令。
- 2 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報
0/150
提交
取消