PHP大文件上传会话丢失

住房日

我在将大文件上传到服务器上的PHP脚本时遇到问题。一切正常,除非上传了较大的文件。上传大小约为170MB(大约需要40-50分钟)的文件时,它曾经工作过一次,但其他所有时间均失败。约420MB的文件(大约需要80-110分钟)尚未成功上传。奇怪的是,我在PHP日志或Apache日志中没有收到任何错误,当文件被接收和处理时,会话只是空的。我有所有推荐的设置

in PHP app:
ini_set('max_execution_time', '8640');// 24h 
ini_set("session.cookie_lifetime", '0'); // 24h
ini_set("session.gc_maxlifetime", '8640'); // 24h
ini_set("default_socket_timeout", '8640'); // 24h
ini_set("error_reporting", "true");
error_reporting(E_ALL|E_STRCT);

in .htaccess
php_value memory_limit 4194304000
php_value post_max_size 3145728000
php_value upload_max_filesize 3145728000
php_value max_input_time 8640

我正在AWS的ELB后面运行单个EC2微型实例。在实例上,我使用Apache 2.4.6,PHP 5.5.3运行Ubuntu。通过blueimp jQuery-File-Upload插件(http://blueimp.github.io/jQuery-File-Upload/上传文件该插件声称最多可以上传4GB。该插件通过AJAX执行上传,不知道它是否与问题有关。

即使我不通过ELB访问该实例,换句话说,通过EC2实例的IP访问该应用程序,我也会收到此错误。

在本地WAMP服务器上执行相同的操作时,大文件没有任何问题。

我已经在ajax请求启动之前打印出客户端IP(这是PHP错误日志中每个条目打印的客户端值),然后在完成后发现端口不同,然后再次打印,

Before upload start
[client 105.224.7.32:53623]

After upload complete
[client 105.224.7.32:53633]

我不知道该错误是否与上载时间,上载大小,内存限制,AWS或什至是完全无关的东西有关,因为我没有收到任何错误消息。

这可能与错误有关吗?任何帮助或指示,将不胜感激。

住房日

看来这与浏览器的会话超时有关。我添加了功能,可每60秒从正在执行文件上传的浏览器ping服务器一次,从而解决了该错误。我猜端口不同(会话在服务器上似乎丢失之后)是由于会话期满后浏览器发送了新的连接请求。我认为这导致PHP为该请求创建了一个新会话

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章