PHP APC 多个上传工作不正确


PHP APC multiple upload work incorrectly

我有一个表格:

<form onsubmit="upload_start()" target="upload_iframe" action="../blocks/file_tools/upload.php" enctype="multipart/form-data" method="post">
        <input type="hidden" name="APC_UPLOAD_PROGRESS" value="<?php echo md5(rand().time()); ?>" />
        <input id="upload_files" name="upload_files[]" type="file" multiple accept="image/*" />
        <button id="addFilesButton" type="button" class="button button_gray" title="Добавить файлы"> + Добавить файл</button>
        <button class="button button_green" type="submit" title="Загрузить выбранный файлы">Загрузить</button>        
    </form>

在此文件中,我读取了上传状态:

<?php
session_start();
$id = isset($_POST['id']) ? $_POST['id'] : 0;
$status =apc_fetch("upload_".$id);
header('Content-type: application/json');
print_r(apc_fetch("upload_".$id));
echo json_encode($status);
?>

我通过阿贾克斯发送

//Получаем статус загрузки фалов на сервер.
function upload_status()
{
    var id = $("input[name='APC_UPLOAD_PROGRESS']").val();
    $.ajax(
    {
    url: '/blocks/file_tools/upload_status.php',    type: 'POST', dataType: 'HTML', charset: 'utf-8', async:false,
    data: ({id:id}),
    success: function(data) 
    {
          // some code
    }
   })   
   setTimeout(upload_status, 2000);
}

如果我上传文件,代码可以正常工作如果要加载多个文件,APC 将返回仅加载数组 upload_files[ ] 中的最后一个文件的状态。如何获取数组 upload_files[ ] 中每个文件的上传状态?

请参阅 http://php.net/manual/en/apc.configuration.php#ini.apc.rfc1867:

请注意,文件上传跟踪在这一点上不是线程安全的,因此 在上一个上传仍在进行时发生的新上传将 禁用对上一个的跟踪。

这基本上意味着一次只能显示单个文件的上传进度。

如果你需要它不好,最好通过网络服务器实现:

  • http://wiki.nginx.org/HttpUploadProgressModule
  • http://commons.apache.org/proper/commons-fileupload/using.html("查看进度"部分)