Я пытаюсь синхронизировать изображения из одного каталога в другой, используя imagecreatefromjpeg, чтобы изменить размеры изображений в процессе. Всего скрипт должен обработать 15 ГБ файлов изображений. Сначала скрипт работал нормально, пока я не столкнулся с ограничением памяти. Я обнаружил, что это было исправлено, установив следующий код:
ini_set("memory_limit","64M");
Но после гораздо большего количества изображений, где синхронизировалась, снова и снова возникала та же проблема, и снова, и до пятого раза, когда я устанавливал ограничение на 1000M, но это больше не решало проблему. Даже после попытки 9999M он все равно выдал мне ту же ошибку:
Fatal error: Allowed memory size of 1778384896 bytes exhausted (tried to allocate 57060 bytes)
Я проверил свой phpinfo () и обнаружил, что он был правильно установлен:
Directive Local Value Master Value
memory_limit 99999M 512M
Может кто-нибудь дать мне еще один вариант увеличения лимита памяти?
Добавление кода, который я использую для синхронизации:
// SYNCHRONIZE FILES
// GET SOURCE FILES
if ($handle = opendir($hrdir)) {
while (false !== ($file = readdir($handle))) {
if(is_file($hrdir.$file)) {
$nieuwehr_array[$file] = filemtime($hrdir.$file);
}
}
closedir($handle);
}
// GET EXISTING FILES
if ($handle = opendir($hrdestinationdir)) {
while (false !== ($file = readdir($handle))) {
if(is_file($hrdestinationdir.$file)) {
$huidigehr_array[$file] = filemtime($hrdestinationdir.$file);
}
}
closedir($handle);
}
$hr_added_array = array();
$hr_modified_array = array();
// ADD NEW OR MODIFIED FILES
foreach($nieuwehr_array as $file => $change_date) {
if(!isset($huidigehr_array[$file]) || $change_date != $huidigehr_array[$file]) {
new createImage($hrdir, $file, $hrdestinationdir, 800, 600);
touch($hrdestinationdir.$file,$change_date);
if(isset($huidigehr_array[$file])) {
$hr_modified_array[] = $file;
} else {
$hr_added_array[] = $file;
}
}
}
Заранее извиняюсь за некоторые имена голландских переменных.
Изменить 1-12-2011 12:00:
Просто обнаружил, что проблема была в файле образа размером 62 МБ. Похоже, файл больше, чем дать или взять 55 МБ являются проблемой. Кто-нибудь знает, что может вызвать это?