給出一個簡單的代碼,如:PHP - 如何保證正確的命令執行順序
$file = 'hugefile.jpg';
$bckp_file = 'hugeimage-backup.jpg';
// here comes some manipulation on $bckp_file.
假設的問題是,如果該文件是大是巨大的 - let's說JPG - 人們會認爲它將花費一些時間來複制服務器(我的意思是甚至幾毫秒) - 但也會假設下一行的執行速度會快得多。所以在理論上 - 我可能會以「不」此類文件或目錄「嘗試操作尚未創建的文件時發生錯誤 - 或者更糟糕 - 開始操作TRUNCATED文件。
我的問題是我如何確保$ bckp_file在NEXT行處理之前成功創建(或在這種情況下被複制)。
我的選擇是「暫停」,「延遲」下一行執行,直到文件創建/複製完成?
現在我只能想到像
if (!copy($file, $bckp_file)) {
echo "failed to copy $file...\n";
}
這隻會提醒我,但不會解決任何問題(同樣喜歡具有PHP錯誤)
或
if (copy($file, $bckp_file)) {
// move the manipulation to here ..
}
但是這也不是很有效 - 因爲我們說這個副本沒有執行 - 我只是走出循環而沒有實現我的目標,沒有錯誤。
這是一個問題,還是我過度思考? 或者PHP有一個內置機制來確保? 任何推薦的做法? 關於這個問題的任何想法? ??
感謝您的回答。沒有什麼不在問題的範圍之內 - 因爲我正在努力學習更多並且更多地理解:-)。在問題中提到的另一個問題 - 在TRUNCATED文件的情況下是什麼? php-synchronous-mechanisem檢查是否完整?因爲再理論上 - 一個.jpg文件可以被創建並保存/複製,但包含虛假信息(我們都從網上看到了半灰色的jpg文件..) – 2012-03-13 06:01:59
已更新我的答案,在async IO中包含一些信息:) – Corbin 2012-03-13 06:06:22