1

我想通过 PHP 将本地文件上传到 Google Drive。如果我上传一个小文件(<5MB),一切正常。如果我想上传更大的文件,我会收到“致命错误:超过 30 秒的最大执行时间”。我可以在我的 php.ini 中将 max_execution_time 设置为一个非常高的值,但这似乎是一个糟糕的解决方案。如果我使用“set_time_limit(seconds);” 我不能同时上传更多文件(我不知道为什么)。

所以我的问题是如何在不将我的 php.ini 更改为糟糕的执行时间的情况下上传大文件。这应该如何在 PHP 中解决?我只想使用一个简单的 CURL cli 命令,但这不适用于 Google Drive,因为 CURL 不支持 Oath。

4

2 回答 2

2

设置max_execution_timewithset_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();
于 2014-10-29T11:47:36.707 回答
0

使用简单的 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

祝你好运 !

于 2014-10-29T11:29:54.090 回答