Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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-ми мегов, так и есть

Автор: ewolf 15.9.2007, 01:10
Закинь в директорию со своим скриптом файл с таким содержимым

Код

<?php
   phpinfo();
?>


Посмотри чему равны параметры upload_max_filesize и post_max_size
Цитата(Sannis @  14.9.2007,  00:34 Найти цитируемый пост)
Только до таких больших значений поднять на Мастерхосте не получится естессно.


У меня получалось.

Автор: 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
Цитата(Throne @  15.9.2007,  17:50 Найти цитируемый пост)
стоп 2048М - это типа не мегабайты?! =)

Нет, это не магабайты.


ewolf
Вы уверенны в том, что говорите, вы действительно пробывали установив 1024м, закачать файлы <1гб и у вас это успешно получалось?

Автор: console 15.9.2007, 18:52
Логичнее все же было бы предположить, что 2048M - есть 2 Гигабайта...

Цитата(BuShaRt @  15.9.2007,  17:30 Найти цитируемый пост)
Вы уверенны в том, что говорите, вы действительно пробывали установив 1024м, закачать файлы <1гб и у вас это успешно получалось?

А вы пробовали?


http://bugs.php.net/bug.php?id=38051

Автор: ewolf 15.9.2007, 19:18
Цитата(BuShaRt @  15.9.2007,  18:30 Найти цитируемый пост)
Нет, это не магабайты.

Нет, это мегабайты smile 
http://www.php.net/manual/ru/faq.using.php#faq.using.shorthandbytes

Цитата(BuShaRt @  15.9.2007,  18:30 Найти цитируемый пост)
Вы уверенны в том, что говорите, вы действительно пробывали установив 1024м, закачать файлы <1гб и у вас это успешно получалось?


Действительно получалось, правда не на мастерхосте. С мастерхностом сейчас проверю.

Автор: console 15.9.2007, 20:11
Просвятите, что есть Мастерхост?  smile 

Автор: ewolf 15.9.2007, 20:22
Хостинг

Автор: console 15.9.2007, 20:26
Wow  smile ... это сейчас так модно называть хостинг

Автор: BuShaRt 15.9.2007, 20:30
ewolf
В целом с php.net сложно спорить, но когда я впервые задался вопросо загрузки файлов на сервер, именно из-за того, что я приравнял м к мбайтам я убил пол ночи, и потом лишь, когда пересчитал все с учетом м = кб, у меня все вышло. Может это баг денвера  smile , но так оно было.

Добавлено через 1 минуту и 30 секунд
до сих пор стоит на локалке 10000000 м, шоб не лагало -)

Автор: ewolf 15.9.2007, 20:47
Проверил на мастерхосте, к моему удивлению настройки не позволили мне загрузить файл больше 10 мегабайт (memory_limit = 16М). Считаю себя полным ламером, написал в поддержку мастерхоста smile

Автор: 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
Ответ мастерхоста

Цитата

Данные настройки не решат проблему.

На наших серверах установлено ограничение в 7 мб на загрузку файлов по http.


Так что, увы... ((

Автор: 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
Ну блин я для фирмы делаю промо-проект, а они такие б**** идиоты, что даже с коммандером не могут толком понять как обращаться  smile 

Автор: ewolf 16.9.2007, 20:43
Сделай для них ссылку в админке, которая позволит закачивать файлы через эксплорер
вида ftp://login:[email protected]

Автор: Throne 16.9.2007, 20:55
ну дак они еще должны файл назвать правильно..... хотя есть по этому поводу идея: в оригинале скрипт выдавал конечные имена и пути к файлам, которые были загружены, мб сказать, чтоб так и называли....

Автор: Throne 14.5.2008, 14:52
Уже в другой фирме нужно было установить зенда чтобы цмс-ку поставить можно было, а чтобы поставить зенда надо поставить свой интерпритатор php smile терь у меня было полчше с SSH посему закончил до конца всю установку, естестно т.к. небыло у мастерхоста мануала по установке именно той версии зенда которую мне надо, я установить установил вот така работало все исключительно в теории... на деле выдавало 500-ую ошибку :( позвонил я в мастерхост, говорят - оставь заяву из панели управления хостингом. оставил. через 2 часа вижу появились еще одни папочки php и зенда, появилась вторая cgi-bin и в конце концов се супер заработало smile и файлы большие грузяццо.

Мораль - хочешь лить в мастерхосте большие файлы — делай свой интерпритатор, а если не работает пиши заяву в свободной форме.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)