Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Время жизни скрипта |
Автор: Throne 13.9.2007, 19:45 |
На сервере (мастерхост) жестко установленно время жизни скрипта, в админке на сайте есть возможность заливать файлы, но т.к . время работы скрипта ограничено, файлы заливаются только те, которые успевают залиться за 10 секунд. пробовал использовать "set_time_limit(300);" - не помогло. файлы передаются через форму по посту, затем перемещаются из временной директории в нужное место и переименновываются. подскажите пожалуйста, как можно осуществить загрузку больших файлов? |
Автор: ewolf 13.9.2007, 21:34 |
Проблема не в ограничении по времени (оно не учитывается в загрузке файла), а в значениях post_max_size и upload_max_filesize Поставь, например php_value post_max_size 2048M php_value upload_max_filesize 1024M |
Автор: Throne 14.9.2007, 00:15 |
это ставить в скрипте или в инишнике? если второе то не катит. если первое то поконкретнее напиши плиз. Добавлено через 2 минуты и 4 секунды Очень будет хорошо, если есть возможность это написать в htaccess |
Автор: Sannis 14.9.2007, 00:34 |
ewolf как раз привёл пример как это написать в .htaccess. Только до таких больших значений поднять на Мастерхосте не получится естессно. |
Автор: Throne 14.9.2007, 22:41 |
ммм. написал.... чет реакции ноль.... как грузилось не больше 8-ми мегов, так и есть |
Автор: Throne 15.9.2007, 13:44 |
эти дириктивы установились, но все равно не прет. может быть из-за этого - memory_limit 10M ? пробывал поменять - не получается Добавлено через 5 минут и 50 секунд Еще раз перепроверил, он вырубается или по таймауту или из-за вот этого - memory_limit 10M , проходит ровно 30 секунд загружается либо ровно 10 метров либо время выходит, хотя это действительно наврядли из-за времени потому, что ночью (у меня инет ночью в 10 раз быстрее) скрипт работал около 5-ти секунд. |
Автор: Golda 15.9.2007, 17:15 |
А в логах сообщения об ошибках есть? |
Автор: Throne 15.9.2007, 17:27 |
есть ошибки только о том, что я пытался изменить дерективы, которые не меняются (время выполнения и "мемори лимит") Добавлено через 7 минут ммм. а можно ли как-то осуществить передачу файла не по http а по ftp. (по ftp файлы передаются сколь угодно долго и любого размера) |
Автор: BuShaRt 15.9.2007, 17:39 |
php_value post_max_size 2048M php_value upload_max_filesize 1024M 2 и 1 мб? Странно, что 8мб загрузилось -) |
Автор: Throne 15.9.2007, 17:50 |
стоп 2048М - это типа не мегабайты?! =) |
Автор: ewolf 15.9.2007, 18:19 |
это 2048 мегабайт и 1024 мегабайта - т.е. загрузка вплоть до гигабайта. |
Автор: BuShaRt 15.9.2007, 18:30 |
Нет, это не магабайты. ewolf, Вы уверенны в том, что говорите, вы действительно пробывали установив 1024м, закачать файлы <1гб и у вас это успешно получалось? |
Автор: console 15.9.2007, 18:52 | ||
Логичнее все же было бы предположить, что 2048M - есть 2 Гигабайта...
А вы пробовали? http://bugs.php.net/bug.php?id=38051 |
Автор: ewolf 15.9.2007, 19:18 | ||
Нет, это мегабайты ![]() http://www.php.net/manual/ru/faq.using.php#faq.using.shorthandbytes
Действительно получалось, правда не на мастерхосте. С мастерхностом сейчас проверю. |
Автор: console 15.9.2007, 20:11 |
Просвятите, что есть Мастерхост? ![]() |
Автор: ewolf 15.9.2007, 20:22 |
Хостинг |
Автор: console 15.9.2007, 20:26 |
Wow ![]() |
Автор: BuShaRt 15.9.2007, 20:30 |
ewolf, В целом с php.net сложно спорить, но когда я впервые задался вопросо загрузки файлов на сервер, именно из-за того, что я приравнял м к мбайтам я убил пол ночи, и потом лишь, когда пересчитал все с учетом м = кб, у меня все вышло. Может это баг денвера ![]() Добавлено через 1 минуту и 30 секунд до сих пор стоит на локалке 10000000 м, шоб не лагало -) |
Автор: ewolf 15.9.2007, 20:47 |
Проверил на мастерхосте, к моему удивлению настройки не позволили мне загрузить файл больше 10 мегабайт (memory_limit = 16М). Считаю себя полным ламером, написал в поддержку мастерхоста ![]() |
Автор: BuShaRt 15.9.2007, 22:48 |
ewolf, попробуй поставить > 10240 М ;) |
Автор: ewolf 15.9.2007, 22:58 |
Я конечно попробывал, но, как я и ожидал, ничего не изменилось. Собственно и симтпомы проблемы разные - когда реально ограничивает upload_max_filesize, скрипт все равно срабатывает, но в массиве $_FILES значение $_FILES['file']['error'] становится равным UPLOAD_ERR_INI_SIZE. В данном же случае загрузка просто "зависает" на 10 мегабайтах и потом выдает ошибку "Соединение закрыто удалённым сервером". Еще одна фишка, которая меня смущает - в дирректории временных файлов в момент загрузки не создается файл, в который теоретически должно все загружаться. Я конечно не уверен, но по-моему проблема в том, что на мастерхосте установлен nginx (или подобный ему сервер), который является фронт-эндом к апачу. И этот nginx кэширует загружаемый файл в памяти, а лишь потом отдает апачу. Но я могу и ошибаться. В любом случае, жду ответа техподдержки. |
Автор: ewolf 16.9.2007, 14:15 | ||
Ответ мастерхоста
Так что, увы... (( |
Автор: Throne 16.9.2007, 15:05 |
И все-таки, раз уж стоит ограничение может быть попробывать по фтп грузить? вот тока как.... (кстати они (мастерхост) как вариант решения предложили запустить собственный интерпритатор php, ну или как-то так, но так как я ни чего не понимаю в SSH и *nix командах, то ничего не вышло) |
Автор: ewolf 16.9.2007, 15:55 |
Создай дополнительный аккаунт, позволяющий заливать файлы только в определенную папку |
Автор: Throne 16.9.2007, 16:58 |
Я имел в виду - как это сделать через веб-интерфейс? Как послать и принять не по хттп а по фтп? |
Автор: BuShaRt 16.9.2007, 17:41 |
Throne, А оно действительно надо, чтоб через веб-интерфей грузились такие большие файлы? |
Автор: Throne 16.9.2007, 18:09 |
Ну блин я для фирмы делаю промо-проект, а они такие б**** идиоты, что даже с коммандером не могут толком понять как обращаться ![]() |
Автор: ewolf 16.9.2007, 20:43 |
Сделай для них ссылку в админке, которая позволит закачивать файлы через эксплорер вида ftp://login:[email protected] |
Автор: Throne 16.9.2007, 20:55 |
ну дак они еще должны файл назвать правильно..... хотя есть по этому поводу идея: в оригинале скрипт выдавал конечные имена и пути к файлам, которые были загружены, мб сказать, чтоб так и называли.... |
Автор: Throne 14.5.2008, 14:52 |
Уже в другой фирме нужно было установить зенда чтобы цмс-ку поставить можно было, а чтобы поставить зенда надо поставить свой интерпритатор php ![]() ![]() Мораль - хочешь лить в мастерхосте большие файлы — делай свой интерпритатор, а если не работает пиши заяву в свободной форме. |