PHP APC监测上传进度

要监视上传进度,不外乎两种方案

1. 在客户端监测发送了多少数据

2. 在服务端监测接收了多少数据


APC是在服务端方案的一种。首先是Windows下APC的配置


[PHP_APC]
extension=php_apc.dll

apc.rfc1867 = on

然后是测试代码:

upload.php

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	$raw = file_get_contents($_FILES['file']['tmp_name']);
	echo (int)(strlen($raw) / 1024 / 1024) . ' MB';
	exit;
}

session_start();
$_SESSION['id'] = uniqid();
?>

<form enctype="multipart/form-data" action="upload.php" method="POST">
	<input type="hidden" name="APC_UPLOAD_PROGRESS" value="<?php echo $_SESSION['id'] ?>" />
	<input type="file" name="file" />
	<input type="submit"/>
</form>

progress.php

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	$status = apc_fetch('upload_'.$_SESSION['id']);
	var_dump($_SESSION['id']);
	echo json_encode($status);
	exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Upload Progress Moniter</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
	window.setInterval(function() {
		$.post('progress.php', function(data) {
			$('#msg').text(data);
		})
	}, 100);
</script>
</head>

<body>
<pre id="msg"></pre>
</body>
</html>


此方法对于SAE无效,因为请求会被Balance到不同的主机,而APC的信息存在于“本地”,而非所有电脑都一样!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值