Вот в этой теме обсуждался такой вопрос. Я там тоже одно решение предложил.
Я прочёл у товарищей из Джумлы следующее:
И вспомнил, что именно это я и наблюдал когда-то кое-где. Может я что-то не так понял?
Так я как раз и увидел, что прочитанное мной сейчас, соответствует реальности, наблюдаемой мной ранее :)
В инструкциях ко многим различным скриптам часто пишут: "обязательно задайте для такой-то папки и таких-то файлов права доступа 777, чтобы сприпт мог в них писать". Если скрипты работают от имени того же пользователя, от чьего работает и FTP (как это происходит в CGI/FastCGI, насколько я понял), то никому не надо задавать 777, так как скрипт всегда будет хозяином всех файлов - и созданных им самим, и загруженных на сервер через FTP.
ПХП - для создания удобного интерфейса для админа, который должен картинки проверить, распределить, утвердить. Первый вопрос, вроде, тьфу-тьфу, решён. По второму вопросу, всё создаётся очень просто, примерно так:
while(есть что обрабатывать){
обработать картинку;
echo "$i-ый файл готов<br>\n";
flush();
}
На паре других (шаред) хостингах, на страничке постепенно появляются надписи: "1-ый файл готов"... А на этом, пока все не обработаются, ничего не появляется.
Почитал об особенностях mod_php и FastCGI, и понял/вспомнил одну вещь. Бывало мне приходилось иметь дело с хостингами, на которых была абсолютно геморойная ситуация с правами доступа к файлам и папкам. Файл, который я загрузил на сервер через FTP, я не мог редактировать PHP-сприптом. И наоборот, файлы, созданные скриптом, я не мог удалить или переименовать через FTP. Помню, меня тогда сильно доставала эта ситуация. Теперь я понял: это были сервера с mod_php. Нет уж, спасибо, не надо такого.
Я повторюсь, что это мой первый опыт администрирования. Я не знаю, какие лимиты умные, а какие - безумные. Если подскажете, буду признателен.
Пока что, сервер планируется использовать только для этого. Посещаемых сайтов на нём не будет.
Мы получили этот сервер уже с FastCGI. Насколько сложно/опасно переделать его на mod_php? Если основной сценарий использования сервера - запуск тяжёлых скриптов обработки графики, насколько лучше будет с mod_php?
Ну, тем, что оно неудобно. И админу, и программисту. В случае, если не по крону, то програмист делает очень типовой скриптик, который получает параметры формы (от админа, просмотревшего картинки), сразу делает с ними что надо, включая накладку ватермарков, и показывает админу результат.
А если по крону, то админ должен посмотреть, задать параметры, и дожидаться очередного крона. А программист должен написать отдельный скрипт, принимающий параметры, как-то где-то их сохранить, отдельный скрипт для крона, чтобы прочесть параметры и обработать картинки, и третий скрипт, чтобы потом показать результат админу.
П.С. По поводу flush() (отмены буферизации) вопрос всё ещё актуален, если кто что подскажет - буду признателен.
pupseg, огромное спасибо! Поставил оба параметра (IPCConnectTimeout и IPCCommTimeout) в 3600, прогнал пару раз, полёт нормальный! Не падает! Обработал 60 файлов (все что надо было) за 103 секунды :)
Это был Ubuntu
По крону неудобно. Там админ должен просмотреть картинки, определить к чему они относятся, распределить их, утвердить, и тогда уже обрабатывать.
П.С. php.ini находится в /etc/php5/cgi/php.ini , и я убедился, что задействован именно он - изменения в нём отражаются в phpinfo().
Пробовал flush() - не помогает. А ob_flush() можно (имеет смысл) делать, если не было ob_start() ?
Но на другом сервере, на шаред хостинге, это не так. Я в скрипте выдаю эхо поле каждой картинки, и оно сразу выводится в браузер, и я сразу вижу, сколько картинок уже обработалось, как быстро они обрабатываются. Это очень удобно. Интересно, как сделать, чтобы и тут так?
Это вариант, спасибо. Сейчас поковыряюсь.
Всё же, интересно, из-за чего может падать PHP-скрипт?
П.С. Второстепенный вопрос, не важный, но если кто знает... В php.ini стоит output_buffering = Off, но вывод всё равно буферизуется - пока скрипт не закончит работу, ничего не показывается в браузере. Можно ли от этого избавиться?