Stas
Новичок
Добрый день!
Посоветуйте, пожалуйста, в чем проблема.
Написаны скрипты обновления - наполнения контентом интернет-магазина (Joomla + JoomShopping).
Пытаюсь загрузить 80.000 товаров, на каждый - 3 картинки.
Картинки равномерно разбрасываются по 1.000 каталогам (000 - 999).
Хостинг на VPS сервере.
Логика следующая:
0. 1С проверяет, удален ли файл-флаг stop.txt и загруженые ранее файлы с данными
0.1. если нет - ждет 150 секунд и проверяет снова
0.2. если нет - вываливается по ошибке
1. из 1С по FTP записываю zip файл с архивом картинок (около 200 шт, не более 5 Мб)
2. из 1С по FTP записываю zip файл с текстовым файлом на 200 товаров
3. из 1С стартуется скрипт script1, который в консольном режиме (таким образом снимаю ограничение по времени работы) стартует скрипт обновления script2
4. script2 создает файл-флаг stop.txt (его наличие означает, что скрипт работает)
5. script2 раскрывает архив с текстовым файлом товаров и удаляет zip - файл
6.1. script2 пускает цикл i от 1 до 200
6.2. берет из текстового файла i-ю строку с данными товара и либо добавляет его в MySQL если товара нет, либо изменяет записи если есть
6.3. из zip-файла с картинками берет i-ю и извлекает ее с именем myimg.jpg
6.4. сохраняет с оригинальным размером и уникальным именем (MD5 + проверка на случайное дублирование) в соответствующий каталог
6.5. сохраняет со средним размером и уникальным именем full & то же имя
6.6. сохраняет с малым размером и уникальным именем thumb & то же имя
6.7. возвращается к п.п. 6.1.
7. script2 удаляет файл-флаг stop.txt и загруженые ранее файлы
8. script2 завершает работу
После п.п.3 1С ждет 5 секунд и начинает в цикле запускать с интервалом 5 сек. script3, который проверяет наличие файл-флага stop.txt и при его отсутствии возвращает OK
9. получив ОК 1С переходит к п.п. 0.
До 40.000 товаров все работало как часы, после - полезли ощибки.
Ошибка 1:
1С периодически вываливается по ошибке п.п. 0.2. Т.е. не хватило 150 секунд что бы удалились файлы, видимо из кэша. (Проверяю is_file()).
Тем не менее когда замечаю эту ситуацию файлов на сервере уже нет и можно ничего не исправляя снова стартовать алгоритм с п.п. 0.
Ошибка 2:
Заметил, что не все файлы картинок начали записываться. В логах наблюдаю следующие строки:
Warning: imagejpeg(): Unable to open '/var/www/.........../img_products/111/95cc20d798e5c69b2210f5743000e1dc.jpg' for writing: Permission denied in /var/www/......./classSimpleImage.php on line 45
Т.е. не удается создать файл. Причем не все, а процентов 5 - 10, да и процент ошибок растет с увеличением количества файлов.
Права ни при чем, ставлю на папки и файлы 777.
Помогите, пожалуйста, может кто нибудь сталкивался?
Посоветуйте, пожалуйста, в чем проблема.
Написаны скрипты обновления - наполнения контентом интернет-магазина (Joomla + JoomShopping).
Пытаюсь загрузить 80.000 товаров, на каждый - 3 картинки.
Картинки равномерно разбрасываются по 1.000 каталогам (000 - 999).
Хостинг на VPS сервере.
Логика следующая:
0. 1С проверяет, удален ли файл-флаг stop.txt и загруженые ранее файлы с данными
0.1. если нет - ждет 150 секунд и проверяет снова
0.2. если нет - вываливается по ошибке
1. из 1С по FTP записываю zip файл с архивом картинок (около 200 шт, не более 5 Мб)
2. из 1С по FTP записываю zip файл с текстовым файлом на 200 товаров
3. из 1С стартуется скрипт script1, который в консольном режиме (таким образом снимаю ограничение по времени работы) стартует скрипт обновления script2
4. script2 создает файл-флаг stop.txt (его наличие означает, что скрипт работает)
5. script2 раскрывает архив с текстовым файлом товаров и удаляет zip - файл
6.1. script2 пускает цикл i от 1 до 200
6.2. берет из текстового файла i-ю строку с данными товара и либо добавляет его в MySQL если товара нет, либо изменяет записи если есть
6.3. из zip-файла с картинками берет i-ю и извлекает ее с именем myimg.jpg
6.4. сохраняет с оригинальным размером и уникальным именем (MD5 + проверка на случайное дублирование) в соответствующий каталог
6.5. сохраняет со средним размером и уникальным именем full & то же имя
6.6. сохраняет с малым размером и уникальным именем thumb & то же имя
6.7. возвращается к п.п. 6.1.
7. script2 удаляет файл-флаг stop.txt и загруженые ранее файлы
8. script2 завершает работу
После п.п.3 1С ждет 5 секунд и начинает в цикле запускать с интервалом 5 сек. script3, который проверяет наличие файл-флага stop.txt и при его отсутствии возвращает OK
9. получив ОК 1С переходит к п.п. 0.
До 40.000 товаров все работало как часы, после - полезли ощибки.
Ошибка 1:
1С периодически вываливается по ошибке п.п. 0.2. Т.е. не хватило 150 секунд что бы удалились файлы, видимо из кэша. (Проверяю is_file()).
Тем не менее когда замечаю эту ситуацию файлов на сервере уже нет и можно ничего не исправляя снова стартовать алгоритм с п.п. 0.
Ошибка 2:
Заметил, что не все файлы картинок начали записываться. В логах наблюдаю следующие строки:
Warning: imagejpeg(): Unable to open '/var/www/.........../img_products/111/95cc20d798e5c69b2210f5743000e1dc.jpg' for writing: Permission denied in /var/www/......./classSimpleImage.php on line 45
Т.е. не удается создать файл. Причем не все, а процентов 5 - 10, да и процент ошибок растет с увеличением количества файлов.
Права ни при чем, ставлю на папки и файлы 777.
Помогите, пожалуйста, может кто нибудь сталкивался?