2013-12-18 34 views
-1

我在我的php腳本中運行一個shell腳本。在更新mysql行之前運行shell並轉換圖像?

$make_small_thumbnail = shell_exec("convert ".$upload_dir."medium/".$processed_filename.".jpeg -resize 133x75 -background black -gravity center -extent 133x75 ".$upload_dir."thumb/".$processed_filename.".jpeg"); 

然後,我有後

$query = "UPDATE etc..."; 

MySQL查詢權。然而,外殼完成其圖像轉換之前更新該行。如何確保在執行更新之前轉換圖像?

+0

請聯繫convert'的'詳細的使用說明供應商。 – hakre

回答

0

什麼

$make_small_thumbnail = shell_exec("convert ".$upload_dir."medium/".$processed_filename.".jpeg -resize 133x75 -background black -gravity center -extent 133x75 ".$upload_dir."thumb/".$processed_filename.".jpeg"); 
echo $make_small_thumbnail; 
echo "<br />\n"; 
echo 'tests'; 

說明了什麼?我的猜測是,儘管shell_exec是同一線程中的命令,但轉換命令實際上啓動了一個新線程,或者至少讓php認爲命令完成了。如果是這樣的話,你的sql-insert正在執行,而你的convert-command正在執行。請更改您的命令,以便shell_exec等待轉換完成或根本不使用shell_exec,而是使用imagick庫來實現相同的結果。

+1

在php – zerkms

+0

@Stijn沒有內置線程我只得到
和測試回聲。來自前一個命令行的警告不會影響下一個命令行。 – Darius

1

對於您可以簡單地檢查,如果最終圖像存在,是這樣的:

while(file_exists(PATH_TO_FILE) != true) 
    sleep(1); //wait one second 

If file exists run query. 
+0

這是治癒症狀,而不是疾病 – zerkms

相關問題