PHP APC多次上传工作不正确

时间:2013-09-11 13:35:45

标签: php upload progress-bar apc

我有一张表格:

<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);
?>

我通过ajax发送

//Получаем статус загрузки фалов на сервер.
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 [] 中每个文件的上传状态?

1 个答案:

答案 0 :(得分:1)

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

  

请注意,此时文件上传跟踪不是线程安全的,所以   在上一个仍在进行时发生的新上传将会发生   禁用之前的跟踪。

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

如果您需要它,最好通过网络服务器实施: