Я хочу загрузить локальный файл через PHP на Google Drive. Если я загружу небольшой файл (<5MB) все работает. Если я хочу загрузить файл большего размера, я получаю «Неустранимая ошибка: превышено максимальное время выполнения 30 секунд». Я могу установить max_execution_time в моем php.ini на очень высокое значение, но это кажется плохим решением. Если я использую «set_time_limit (секунд);» Я не могу загрузить больше файлов одновременно (я не знаю почему).
Поэтому мой вопрос заключается в том, как загрузить большой файл без замены моего php.ini на плохое время выполнения. Как это должно решить в PHP? Я хотел бы использовать простую команду CURL cli, но она не работает с Google Drive, потому что CURL не может поддерживать присягу.
Настройка max_execution_time
с set_time_limit
это правильное решение. Если ваш скрипт загружает файл более 30 секунд, он будут запустить более 30 секунд.
set_time_limit(600); //File upload should not take longer than 10 minutes
do_your_file_upload();
set_time_limit(30); //Change it back to 30 seconds for further processing
Я не могу загрузить больше файлов одновременно
Можете ли вы указать, что вы имеете в виду?
Если вы не можете получить доступ к своему PHP-скрипту во время работы другого, это часто происходит из-за Управление сессиями PHP. Когда вы начинаете сеанс с session_start PHP (создает и) открывает файл сеанса и блокирует его для записи. Файл будет заблокирован, пока ваши скрипты не вызовут session_write_close или выполнение скрипта заканчивается. Чтобы работать с двумя или более сеансами одновременно, нужно позвонить session_write_close:
session_start();
//do stuff
session_write_close();
set_time_limit(600); //File upload schould not take longer than 10 minutes
do_your_file_upload();
set_time_limit(30); //Change it back to 30 seconds for further processing
session_start();
//do more stuff
session_write_close();
Это плохая идея использовать простой PHP-код для загрузки очень большого файла.
Вы должны использовать Javascript для загрузки больших файлов, потому что он использует методы AJAX. Кроме того, это позволит вам отображать индикатор выполнения.
Я сделал небольшое исследование. Вот несколько хороших сценариев, использующих jQuery:
http://designscrazed.org/html5-jquery-file-upload-scripts/
Или другой скрипт, который не использует jQuery (я не использую, если он хороший):
http://igstan.ro/posts/2009-01-11-ajax-file-upload-with-pure-javascript.html
Удачи !