2013-12-18 1 views
-1

Я запускаю сценарий оболочки в своем php-скрипте.Запустить оболочку и преобразовать изображение перед обновлением строки mysql?

$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"); 

Тогда у меня есть право MySQL Query после этого

$query = "UPDATE etc..."; 

Тем не менее, он обновляет строку, прежде чем оболочка завершает преобразование изображения. Как я могу убедиться, что изображение будет преобразовано до того, как будет выполнено обновление?

+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 является командой внутри одного потока, команда convert фактически запускает новый поток или, по крайней мере, делает php, думаю, команда завершена. Если это так, ваша sql-вставка выполняется WHILE, когда выполняется ваша команда-конвертер. Либо измените вашу команду, чтобы 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

Смежные вопросы