1

我有一个运行 codeigniter 的 imagehost 风格的网站,我正在尝试使用 APC 实现一个进度条,以便在文件上传时显示。

现在,当我访问进度视图页面或通过 ajax 时,它只是返回bool(false).

我已经apc_store在该视图中进行了测试和获取,只是为了查看 APC 是否正常运行,并且这种方式有效,但我的上传表单方式似乎不适用于 APC。

我的进度视图 (domain.com/progress/KEY) http://pastebin.com/m2qF1BEw

progress()的控制器:

function progress() {
    $this->load->model('Site_model');

    $data['PROGRESS_KEY']= $this->input->post('progress_key');
    $this->load->view('progress', $data);
}

在我的上传页面视图上设置的密钥:

$up_id = md5(uniqid(rand()));

我的上传页面视图中的表单:

<form action="http://domain.com/site" method="post" accept-charset="utf-8" enctype="multipart/form-data">

    <input type="hidden" name="APC_UPLOAD_PROGRESS" value="a1105b41e90ed6cdaa7bdef008da40ee" id="progress_key"  />

    <input type="file" name="userfile[]" value="" multiple="multiple" id="file" accept="image/*,application/pdf"  />

    <input type="submit" name="upload" id="upload" />

</form>

<iframe id="upload_frame" class="nodisplay" name="upload_frame" frameborder="0" border="0" src="" scrolling="no" scrollbar="no" > </iframe>

这是表单页面上每秒请求进度视图的 JS:

http://pastebin.com/6QW3sZLz

谁能看到我可能做错了什么?谢谢

这也是我所有由 phpinfo() 确认的 apc php.ini 设置

apc.cache_by_default    On      On
apc.canonicalize        On      On
apc.coredump_unmap      Off     Off
apc.enable_cli  On      On
apc.enabled     On      On
apc.file_md5    Off     Off
apc.file_update_protection      2       2
apc.filters     no value        no value
apc.gc_ttl      3600    3600
apc.include_once_override       Off     Off
apc.lazy_classes        Off     Off
apc.lazy_functions      Off     Off
apc.max_file_size       30M     30M
apc.mmap_file_mask      no value        no value
apc.num_files_hint      1000    1000
apc.preload_path        no value        no value
apc.report_autofilter   Off     Off
apc.rfc1867     On      On
apc.rfc1867_freq        10k     10k
apc.rfc1867_name        APC_UPLOAD_PROGRESS     APC_UPLOAD_PROGRESS
apc.rfc1867_prefix      upload_ upload_
apc.rfc1867_ttl 3600    3600
apc.serializer  default default
apc.shm_segments        1       1
apc.shm_size    32M     32M
apc.slam_defense        On      On
apc.stat        On      On
apc.stat_ctime  Off     Off
apc.ttl 7200    7200
apc.use_request_time    On      On
apc.user_entries_hint   4096    4096
apc.user_ttl    7200    7200
apc.write_lock  On      On
4

1 回答 1

0

好吧,这对我来说看起来不对

function progress() {
    $this->load->model('Site_model');

    $data['PROGRESS_KEY']= $this->input->post('progress_key'); // error here
/* above you fetch "progress key" should change to APC_UPLOAD_PROGRESS */

    $this->load->view('progress', $data);
}

在此输入字段中,名称为 APC_UPLOAD_PROGRESS,您正在获取 ID

<input type="hidden" name="APC_UPLOAD_PROGRESS" value="a1105b41e90ed6cdaa7bdef008da40ee" id="progress_key"  />

你的 javascript 看起来还可以,但你没有得到当前值,你是手动设置的。

$("#progress_key").val();

应该给你输入字段的值。

于 2012-07-20T19:49:01.137 回答