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

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

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

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

PHP
料青山看我應如是 2022-08-05 09:57:58
我有命令,從我執行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 。' to the realpath(Yii::$app->basePath) .'/../../uploads/first_log.log.但是在運行此過程后,我想發送一封有關第一個命令狀態的電子郵件?,F在我的狀態為“進行中”,這意味著$nextCommand在第一次完成執行后沒有執行(在我的情況下,我想要的狀態應該是成功或失敗,它通過第一個命令在數據庫中更新)。如果我刪除 & echo $!然后它不會將輸出/錯誤記錄到必要的日志文件中。
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

此代碼段應為(查看 后面的缺失字符)。2>&1 & echo $! &&2>&1 && echo $! &&&&1

原因是最后只有一個字符,命令將在后臺運行并立即返回。以便在第一個命令尚未完成時啟動第二個命令。&


查看完整回答
反對 回復 2022-08-05
?
阿晨1998

TA貢獻2037條經驗 獲得超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); 

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


查看完整回答
反對 回復 2022-08-05
  • 2 回答
  • 0 關注
  • 188 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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