pcntl研究
2015-09-09 17:10
363 查看
虽说php用于并发计算有点山寨,但总比没有强把。(有问题请指正)
下面是pcntl多线程的例子。(只能用于cli模式,而且只能用于linux环境)
<?php
$starttime=microtime();
$m = new Memcache;
$m->addServer('127.0.0.1', 11211);
$k=1;
$m->set('foo', 1);
//$m->set('key', 0);
for ($i = 1; $i <= 100; ++$i) {
$pid = pcntl_fork();
if (!$pid) {
//
//sleep(1);
//程序处理代码,memcache并发有问题,同时解决并发问题。
//$lock = "ss" . '.lck';
//$write_length = 0;
//while(true) {
//if( file_exists($lock) ) {
//usleep(100);
//} else {
//touch($lock);
//$m->set('foo', $m->get('foo')+1);
//echo $key=$m->get('foo');
print "In child $i\n";
break;
}
}
if( file_exists($lock) ) {
unlink($lock);
}
exit($i);
}
}
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
//echo $status;
echo "Child $status completed\n";
}
$endtime=microtime();
?>
下面是pcntl多线程的例子。(只能用于cli模式,而且只能用于linux环境)
<?php
$starttime=microtime();
$m = new Memcache;
$m->addServer('127.0.0.1', 11211);
$k=1;
$m->set('foo', 1);
//$m->set('key', 0);
for ($i = 1; $i <= 100; ++$i) {
$pid = pcntl_fork();
if (!$pid) {
//
//sleep(1);
//程序处理代码,memcache并发有问题,同时解决并发问题。
//$lock = "ss" . '.lck';
//$write_length = 0;
//while(true) {
//if( file_exists($lock) ) {
//usleep(100);
//} else {
//touch($lock);
//$m->set('foo', $m->get('foo')+1);
//echo $key=$m->get('foo');
print "In child $i\n";
break;
}
}
if( file_exists($lock) ) {
unlink($lock);
}
exit($i);
}
}
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
//echo $status;
echo "Child $status completed\n";
}
$endtime=microtime();
?>
相关文章推荐
- 0909 关于编译原理
- 0909 关于编译原理
- Spring+MyBatis多数据源配置实现
- spring 注入简单模拟
- HDU 1323 Perfection (水题)
- PMI-ACP敏捷认证:敏捷开发的6个实战经验
- ZBar扫码
- [leetcode-214]Shortest Palindrome(java)
- iOS,关于真机tableViewCell上面button响应事件,不同版本崩溃问题解决
- JAVA嵌入运行Groovy脚本
- Thrift学习笔记
- Gallery与ImageSwitcher的图片显示
- MTK的Bootable简单分析
- 如何关闭输入法
- 设置UIButton 对齐方式
- 【MVC2】发布到IIS上User.Identity.Name变成空
- mysl 数据库 表 管理【创建 删除 修改 改名 引擎】
- 9月app开发培训:来AppCan充电2天,满满技术能量
- 【springmvc+mybatis项目实战】杰信商贸-9.生产厂家删除+查看
- 解决svn 无法提交.a库问题