KostaShah

Рейтинг
17
Регистрация
11.06.2012

Вот в этой теме обсуждался такой вопрос. Я там тоже одно решение предложил.

Я прочёл у товарищей из Джумлы следующее:

CGI Mode on the other hand, is more secure because the server now manages and controls access to the binaries. PHP can now run as your own user rather than the generic Apache user. This means you can put your database passwords in a file readable only by you and your php scripts can still access it! The "Group" and "Other" permissions (refer Where can you learn more about file permissions?) can now be more restrictive. CGI mode is also claimed to be more flexible in many respects as you should now not see, with phpSuExec (refer Permissions under phpSuExec) issues with file ownership being taken over by the Apache user, therefore you should no longer have problems under FTP when trying to access or modify files that have been uploaded through a PHP interface, such as Joomla! upload options.

И вспомнил, что именно это я и наблюдал когда-то кое-где. Может я что-то не так понял?

Так я как раз и увидел, что прочитанное мной сейчас, соответствует реальности, наблюдаемой мной ранее :)

В инструкциях ко многим различным скриптам часто пишут: "обязательно задайте для такой-то папки и таких-то файлов права доступа 777, чтобы сприпт мог в них писать". Если скрипты работают от имени того же пользователя, от чьего работает и FTP (как это происходит в CGI/FastCGI, насколько я понял), то никому не надо задавать 777, так как скрипт всегда будет хозяином всех файлов - и созданных им самим, и загруженных на сервер через FTP.

ПХП - для создания удобного интерфейса для админа, который должен картинки проверить, распределить, утвердить. Первый вопрос, вроде, тьфу-тьфу, решён. По второму вопросу, всё создаётся очень просто, примерно так:

while(есть что обрабатывать){

обработать картинку;

echo "$i-ый файл готов<br>\n";

flush();

}

На паре других (шаред) хостингах, на страничке постепенно появляются надписи: "1-ый файл готов"... А на этом, пока все не обработаются, ничего не появляется.

Почитал об особенностях mod_php и FastCGI, и понял/вспомнил одну вещь. Бывало мне приходилось иметь дело с хостингами, на которых была абсолютно геморойная ситуация с правами доступа к файлам и папкам. Файл, который я загрузил на сервер через FTP, я не мог редактировать PHP-сприптом. И наоборот, файлы, созданные скриптом, я не мог удалить или переименовать через FTP. Помню, меня тогда сильно доставала эта ситуация. Теперь я понял: это были сервера с mod_php. Нет уж, спасибо, не надо такого.

myhand:
Упадет однажды, коли вы такие безумные таймауты ставите
WapGraf:
Смысл ставить fastcgi и завышать лимиты

Я повторюсь, что это мой первый опыт администрирования. Я не знаю, какие лимиты умные, а какие - безумные. Если подскажете, буду признателен.

Пока что, сервер планируется использовать только для этого. Посещаемых сайтов на нём не будет.

Мы получили этот сервер уже с FastCGI. Насколько сложно/опасно переделать его на mod_php? Если основной сценарий использования сервера - запуск тяжёлых скриптов обработки графики, насколько лучше будет с mod_php?

Andreyka:
Я не понимаю, чем мешает это делать по крону?

Ну, тем, что оно неудобно. И админу, и программисту. В случае, если не по крону, то програмист делает очень типовой скриптик, который получает параметры формы (от админа, просмотревшего картинки), сразу делает с ними что надо, включая накладку ватермарков, и показывает админу результат.

А если по крону, то админ должен посмотреть, задать параметры, и дожидаться очередного крона. А программист должен написать отдельный скрипт, принимающий параметры, как-то где-то их сохранить, отдельный скрипт для крона, чтобы прочесть параметры и обработать картинки, и третий скрипт, чтобы потом показать результат админу.

П.С. По поводу flush() (отмены буферизации) вопрос всё ещё актуален, если кто что подскажет - буду признателен.

pupseg, огромное спасибо! Поставил оба параметра (IPCConnectTimeout и IPCCommTimeout) в 3600, прогнал пару раз, полёт нормальный! Не падает! Обработал 60 файлов (все что надо было) за 103 секунды :)

Это был Ubuntu

Andreyka:
Делайте это по крону

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

П.С. php.ini находится в /etc/php5/cgi/php.ini , и я убедился, что задействован именно он - изменения в нём отражаются в phpinfo().

mirrustam:
так:
http://php.net/manual/en/function.ob-flush.php
пробовали?

Пробовал flush() - не помогает. А ob_flush() можно (имеет смысл) делать, если не было ob_start() ?

webguru2013:
KostaShah,
ничего и не будет показываться до тех пор, пока скрипт не отработает

Но на другом сервере, на шаред хостинге, это не так. Я в скрипте выдаю эхо поле каждой картинки, и оно сразу выводится в браузер, и я сразу вижу, сколько картинок уже обработалось, как быстро они обрабатываются. Это очень удобно. Интересно, как сделать, чтобы и тут так?

Это вариант, спасибо. Сейчас поковыряюсь.

Всё же, интересно, из-за чего может падать PHP-скрипт?

П.С. Второстепенный вопрос, не важный, но если кто знает... В php.ini стоит output_buffering = Off, но вывод всё равно буферизуется - пока скрипт не закончит работу, ничего не показывается в браузере. Можно ли от этого избавиться?

Всего: 97