В папке на сервере 100 файлов jpg.
php программа передвигает каждый файл в другую папку и меняет его рамер.
Перенос происходит порциями по 10 файлов, после чего файл программы перезагружается и запускается вновь, так как время непрерывной работы php на сервере ограничено.
Часто получаю ошибку:
"Warning: rename(...) [function.rename]: No such file or directory in..."
реже другую ошибку:
" imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file in..."
Самое удивительное, после первой порции файлов, ошибок больше не бывает!!!
Другими словами все проблемы, ТОЛЬКО с первой десяткой...
Заранее благодарен за любую помощь,
Валерий.
Спустя 1 час, 14 минут, 35 секунд (5.12.2010 - 00:17) kirik написал(а):
Первая ошибка говорит о том, что php не может найти файл для переименования по указанному пути.
Вторя ошибка похожа на то что jpeg файл битый. Попробуйте его пересохранить в каком-нибудь редакторе и снова пропустить через скрипт.
Вторя ошибка похожа на то что jpeg файл битый. Попробуйте его пересохранить в каком-нибудь редакторе и снова пропустить через скрипт.
Спустя 9 часов, 6 минут, 55 секунд (5.12.2010 - 09:24) vaalsh написал(а):
Спасибо за ответ, kirik!
проблема состоит в том, что:
1. все ошибки происходят ТОЛЬКО с первой десяткой(!) - если поменять файлы местами ошибка будет с файлами, которые раньше никаких проблем не вызывали
2. та же самая программа, с теми же самыми файлами работает без проблем, если запустить ее на другом клиентском компьютере.
Может быть, это связано с буфером, кeшем, быстродействием...?
валерий.
проблема состоит в том, что:
1. все ошибки происходят ТОЛЬКО с первой десяткой(!) - если поменять файлы местами ошибка будет с файлами, которые раньше никаких проблем не вызывали
2. та же самая программа, с теми же самыми файлами работает без проблем, если запустить ее на другом клиентском компьютере.
Может быть, это связано с буфером, кeшем, быстродействием...?
валерий.
Спустя 24 минуты, 56 секунд (5.12.2010 - 09:49) kirik написал(а):
Цитата (vaalsh @ 5.12.2010 - 01:24) |
1. все ошибки происходят ТОЛЬКО с первой десяткой(!) - если поменять файлы местами ошибка будет с файлами, которые раньше никаких проблем не вызывали 2. та же самая программа, с теми же самыми файлами работает без проблем, если запустить ее на другом клиентском компьютере. |
У вас денвер стоит? Вероятно что из-за него эта "магия".
Цитата (vaalsh @ 5.12.2010 - 01:24) |
Может быть, это связано с буфером, кeшем, быстродействием...? |
Наврядли.
Спустя 18 минут, 27 секунд (5.12.2010 - 10:08) vaalsh написал(а):
Я хостинг использую, не знаю про денвер.
как программа на сервере может зависить от того, откуда ее запускают?
Возможно ли как то исправить ситуацию?
Спасибо,
Валерий.
как программа на сервере может зависить от того, откуда ее запускают?
Возможно ли как то исправить ситуацию?
Спасибо,
Валерий.
Спустя 18 минут, 22 секунды (5.12.2010 - 10:26) kirik написал(а):
Цитата (vaalsh @ 5.12.2010 - 02:08) |
как программа на сервере может зависить от того, откуда ее запускают? |
А, вы имели ввиду что запускаете от клиента.. сори, не допонял.
Цитата (vaalsh @ 5.12.2010 - 02:08) |
Возможно ли как то исправить ситуацию? |
Наверняка

Спустя 34 минуты, 48 секунд (5.12.2010 - 11:01) vaalsh написал(а):
if ($handle = opendir('.')) {
while (false !== ($file_name = readdir($handle))) {
if($count>9){
closedir($handle);
mysql_close();
sleep(1);
echo "<script language='javascript'> recall()</script>";
exit();
}
if ($file_name != "." && $file_name != ".." && $file_name != "convert_DVDENG.php") {
$name_in=str_replace(".jpg",'',$file_name);// NAME OF FILE WITHOUT '.JPG'
$name_in=str_replace("'",'’',$name_in); // REPLACE ' TO ’ - NOT CONFUSE THE READING PROG.
$crnt_id++; // CARENT ID -> NAME OF THE FILE
$count++;
if($lang=="english"){
mysql_query("INSERT INTO ".$cat."(id, eng_name) VALUES ('".$crnt_id."', '".$name_in."')");
}else{
mysql_query("INSERT INTO ".$cat."(id, name) VALUES ('".$crnt_id."', '".$name_in."')");
}
$result = mysql_query($query);
if (($result)||(mysql_errno == 0)){
//================== PUT FILES TO FOLDER 'BIG' ==================================
$copy = copy($file_name,'../'.$cat.'/Big/'.$crnt_id.'.jpg');
//=============check if copied========================================
if($copy){
echo ($count." - $file_name - uploaded sucessfully! <br>");
}else{
echo "$file_name - could not be uploaded!<br>";
exit(" ".$count);
}
$filename_n='../'.$cat.'/Big/'.$crnt_id.'.jpg';
resizeImage($filename_n,'Mid',$cat,$crnt_id,470,460);// RESIZE AND PUT TO FOLDER 'MID'
resizeImage($filename_n,'Thumbs',$cat,$crnt_id,140,0);//RESIZE AND PUT TO FOLDER 'THUMBS'
rename($file_name, '../bufer/'.$file_name);
}
}
}
}
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В строке "<script language='javascript'> recall()</script>" страница с программой перегружается для следующих 10 файлов.
! |
kirik |
Спустя 5 минут, 19 секунд (5.12.2010 - 11:06) vaalsh написал(а):
извините, забыл добавить :
сам файл называется "convert_DVDENG.php" и находится он в одной папке с конвертируемыми файлами.
сам файл называется "convert_DVDENG.php" и находится он в одной папке с конвертируемыми файлами.
Спустя 6 минут, 41 секунда (5.12.2010 - 11:13) kirik написал(а):
vaalsh
Так вроде ничего не видать..
Уберите
и посмотрите на каких файлах происходит ошибка..
Так вроде ничего не видать..
Уберите
echo "<script language='javascript'> recall()</script>";
и посмотрите на каких файлах происходит ошибка..
Спустя 1 час, 22 минуты, 56 секунд (5.12.2010 - 12:36) linker написал(а):
1. Поле id сделать автоинкрементным и получать $crnt_id после инсерта функцией mysql_insert_id()
2. Увеличить время выполнения скрипта можно попробовать через set_time_limit(0);
2. Увеличить время выполнения скрипта можно попробовать через set_time_limit(0);