2011-01-26 3 views
1

Сообщение Добавлено: После комментариев совет.PHP APC Progress Bar

Index.php

<?php 
$id = uniqid(""); 
?> 
</head> 

<body> 
<form method="post" action="frame.php" target="upload_iframe" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo $id; ?>"/> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
<iframe name="upload_iframe" style="width: 400px; height: 100px;"> 
</iframe> 

frame.php

<?php 
if(isset($_POST['progress_key'])) { 
    echo "hey1"; 
    $status = apc_fetch('upload_'.$_POST['progress_key']); 
    echo $status['current']/$status['total']*100; 
} 
echo "hey2"; 
?> 

Еще не работает :(, я даже не получить POST данные формы в кадре. Где я буду так неправильно?

С уважением.

+0

Каковы ваши значения php.ini для 'apc.rfc1867_prefix' и' apc.rfc1867_name'? Значение 'name' attrbute в скрытом поле должно соответствовать' apc.rfc1867_name', а префикс вашего вызова 'apc_fetch' должен соответствовать' apc.rfc1867_prefix'. –

+0

В MAMP, я выбрал APC от предпочтений, и в конф> PHP5> php.ini обновление: apc.rfc1867 = на apc.max_file_size = 200M upload_max_filesize = 200M post_max_size = 200M –

ответ

0

Всякий раз, когда вы используете механизм загрузки файлов APC, вам необходимо добавить дополнительный параметр ваша форма, которая идентифицирует файл, который загружается, и является ключом для вашего apc_fetch.

<?php $id = uniqid(time()); ?>
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="myUniProgressKey" value="<?php echo $id; ?>"/>

Как файл загружается значение в ключе upload . $id будет содержать информацию, необходимую для отображения индикатора выполнения. Самый простой способ добраться до ajax опроса сервера, используя apc_fetch звонок у вас есть. Это требует, чтобы ваша страница загрузки не обновляла текущую страницу, на которой пользователь включен. В прошлом я использовал iframe, который запускает интервал для опроса сервера. Как только загрузка будет завершена, вы сможете показать хорошее полное сообщение в том же iframe.

+0

Пожалуйста, помогите мне с обновленным кодом в сообщении, сделанные несколько изменений все еще не работают. http://pastie.org/1500354 Высоко оцененная справка. :) –

+0

Один из способов протестировать это, чтобы затем жестко запрограммировать ваш прогресс, настроить отдельную страницу, которая сбрасывает вывод 'apc_fetch', используя ваш код прогресса жесткого кодирования. Инициируйте загрузку большого файла, а затем обновите тестовую страницу, чтобы узнать, что на самом деле возвращается. Кроме того, вы внедрили бит ajax? Вы знаете, что вам нужно реализовать фактический индикатор выполнения? apc будет отслеживать ход вашей загрузки, но не будет выводить индикатор выполнения для вас. –

+0

Хорошо, я действительно не могу следовать whavt вы предложили, можете ли вы дать небольшой пример кода или что-то еще? Было бы очень полезно. И сейчас моя самая большая проблема в том, что я даже не получаю почтовую ценность! Также я предполагаю, что мой аякс реализован, с настоящим кодом и в примере пасты есть две разные страницы, и я дал вам одну загрузку в iframe. :) Я знаю, что без JS это не будет баром, но я даже не ищу этого, если я могу получить статус $, я смогу реализовать панель тогда .. :) –