apc_fetch()对象始终返回done = 1和total = current

时间:2012-08-27 22:29:49

标签: php javascript apc

没有什么可行的。无论文件大小如何,我都会立即100%完成。我不知道还有什么要说的,但显然必须说些什么或者这不会发布。

ini文件片段:

; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.

apc.rfc1867 = on
apc.rfc1867_freq = 100k
apc.max_file_size = 1024M
upload_max_filesize = 1024M
post_max_size = 1024M
apc.shm_size = 512M

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

进步PHP脚本:

if ($status = apc_fetch('upload_'._GET['up_id'])) {
    if ($status['done']) $percent = 100;
    else if ($status['total'] == 0) $percent = 0;
    else $percent = $status['current'] / $status['total'] * 100;
    echo $percent;
    //echo json_encode($status);
}

使用Javascript:

var setupProgress = function() {
    var pbar;
    var started = false;
    var count = 0;
    $('#upload-form').submit(function() {
        $('#upload-form').hide();
        pbar = $('#progress_bar');
        pbar.parent().show();
        $('#upload_frame').load(function () {
            started = true;
            alert('Upload Complete!');
            pbar.parent().hide(400);
        });
        setTimeout(function () {
            updateProgress($('#uid').val(), pbar, started);
        }, 1000);
    });

    var updateProgress = function(id) {
        var time = new Date().getTime(); //make URL unique to prevent caching
        $.get('get_progress.php', {up_id:id, t:time}, function (data) {
            id$('prog_test').innerHTML += '<br />' + ++count + ':' + data;
            var progress = parseInt(data, 10);
            if (progress < 100 || !started) {
                started = progress < 100;
                setTimeout(function () {
                    updateProgress(id);
                }, 500);
            }
            started && pbar.css('width', progress+'%') && $('#progamt').html(progress+"%");
        });
    };
};

HTML:

<form id="upload-form" style="display:none" enctype="multipart/form-data" action='process_upload_phixed_image.php?<?= session_name(); ?>=<?= session_id(); ?>' method = "post" target="upload_frame">
    <div class="custom_file_upload">
        <span class="browse"></span>
        <span class="file_info">no file selected</span>
        <input type="hidden" name="APC_UPLOAD_PROGRESS" id="uid"  value="<?= $up_id; ?>"/>
        <input class="file_upload" type="file" id="phix_upload" name="file" />
    </div>
    <label>Price<input id="artist_price" name="artist_price" type="text" value=""></label>
    <label>Comment<input id="artist_comment" name="artist_comment" type="text" value=""></label>
    <div id="upload_btns">
        <input id="phix-upload" type="submit" value="Upload">
        <input id="cancel-upload" type="reset" value="Cancel">
    </div>
    <input id="upload_user_id" name="user_id" type="hidden" value="">
    <input id="loadedimage_source_id" name="loadedimage_source_id" type="hidden" value="">
    <iframe style="display:none" id="upload_frame" name="upload_frame" frameborder="0" border="0" src="" scrolling="no" scrollbar="no" ></iframe>
</form>
<div style="display:none" id="progress_bar_wrapper" class="rounded-small"><div id="progress_bar"><div id="progamt"></div></div></div>
<div style="display:none" id="prog_test">placeholder for progress checking</div>

0 个答案:

没有答案