无12      2015-11-08

ab的一般使用命令是 ab -n xx -c yy http://baidu.com  这个命令的意思是启动ab,总共发送xx个请求,每次发送yy个请求(并发请求)。 
执行ab -n 10 -c 10 http://baidu.com 返回结果如下

具体解释参见注释

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> 
无12      2014-11-08

这两天需要给公司开发一个短信发送提醒的功能,一次批量发送几千条短信。
如果直接在后台循环执行虽然可行,但是前台操作用户就只能坐着空等,完全看不到后台执行结果,所以考虑能不能有一种办法可以在php后台执行过程中同时在前台显示后台执行任务进度呢。
但是这里遇到一个问题,一般情况下php都是在后台任务执行完毕后输出结果到浏览器,在执行过程不会给浏览器发送任何数据。这个时候想到了可以使用php的flush函数,可以使用flush函数在程序执行中强制输出;
尝试以下代码:

<?php
for ($i = 1; $i <= 50; $i++) {
 ob_flush();
 flush();
 echo $i.'<br/>';
 sleep(rand(0, 1));
}
?>

网上大都这样的例子,看代码应该会每隔一秒输出一个数字。但是大家实际测试下情况并非如此,而是和没用flush一样,一次性输出1-50;
在这里请大家参考下鸟哥博客上的一篇文章http://www.laruence.com/2010/04/15/1414.html( 深入理解ob_flush和flush的区别);
其中有一段话:

有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。 

甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在接受到 </table> 标记之前,不会显示出整个表格。 

一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这
些浏览器显示页面内容。  

所以找到问题所在了,不是因为flush没有起作用,而是服务器或者浏览器在内容不到一定的字节数(甚至是没有遇到html标记)同样会进行缓存,找到问题所在后尝试以下代码;

<?php
echo str_repeat("<b></br>",4096); //随便输出一段代码立即输出
for ($i = 1; $i <= 50; $i++) {
ob_flush();
flush();
echo $i.'<br/>';
sleep(rand(0, 1));
}
?>

已经可以将后台数据实时发送到前台了,然后有

无12      2014-11-08

1.静态变量及方法  使用关键字static  ,类静态方法不需要实例化对象,使用::符号进行调用;

static的方法和属性只能访问static的方法和属性;

使用self::关键字访问当前类的静态成员;

一个类的所有实例公用该类中的静态属性;

静态方法调用非静态方法,系统会自动将该方法转为静态方法;

———–通过静态方法可以实现php中的 单件模式

2.final 类与方法  

无12      2014-11-08

1.php中类的定义使用关键词 class  ,一般类名使用首字母大写

class People{

}

2.对象的属性(数据状态)是在类中定义的变量,可以通过public private protect 来声明访问权限;

class People{
public   $sex;     //公开的,可以在类的内部和外部随意被访问
protect $name = 'libi'; // 受
无12      2014-11-08

常用的的php错误报告类型:E_Fatal  E_Warring E_Notice

设置错误报告的方法:

1.php.ini文件  设置error_reporting值为对应错误类型,显示全部为E_ALL;(可以用逻辑连接符,&与 |或 ~非)。

2.在php文件中指定(优先级高于php.ini文件),设置方法与php.ini类似,比如在文件头部写入error_reporting(E

无12      2014-11-08

昨天在qq空间看见一篇“神奇的日志”,不同的访客看到同一张图片会显示对应访客的信息,用chrome 查看了下图片来源是个php文件;

基本原理就是 通过 php文件判断来源页面的url(url中包含qq号码),获取qq号码后通过腾讯的开放api接口,获取qq昵称和qq头像,然后用gb函数画图,输出

今天试着在网上找到一个文字转图片的程序,改吧改吧写了一个类似的程序,但是写完发了几篇日志才发

无12      2014-11-08

有很多情况下我们会遇到项目的编码是gbk(gb2312)的情况,大家都知道php的jsonencode函数只支持utf编码,转换gbk编码会把汉字转换为null

大部分使用的办法是使用iconv函数将编码转换为utf8,但是转换成utf8后在前台页面gbk编码的情况下又会乱码,所以又得把json_encode数据转换会utf8;

并在在gbk与utf8互转时遇到特殊字符还会出现各种问题;还

无12      2014-11-08

最近在重学C语言,简单实现了选择排序与冒泡排序,代码如下。

void swap(int *p1,int *p2){
    int temp;//0x7fff5fbff840
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}
int *bubblesort(int *list){
    for (int i = 0; i<10; i++) {
无12      2014-11-08

最近遇到的项目计划使用angularjs做webApp,使用json与后端交互,好处是与后端全面解耦,后端只需要实现api接口就可以了。

现在有很多基于angularjs的前端框架,比较有名的是AngularJs UI,AngularJs Bootstrap,但是都没有完整的App展示,对于刚入门anjularjs的新手来说使用起来还有有点难度的。通过万能的谷歌(对,不是百度那货)终于找到了

无12      2014-11-08
今天在讨论群里一个朋友提了一个问题,深感疑惑,大家可以思索下答案。 $ar = ['a','b','c']; foreach($arr as &$v){} foreach($arr as $v){} var_dump($arr); 相信大家都猜错了,答案是abb,下面详细解释下为什么会出现这种情况。 首先上面的循环,使用&引用赋值,一次给$ar[0] $ar[1] $ar[2]引用赋值,执行完以后$v中保存的为执行$ar[2]的引用地址。所以后面$v与$ar[2]的地址相同,对$v的修改其实就是对$ar[2]的修改。 下面的循环,拆开讲。foreach($arr as $v)就是一次将$v设置为$arr中对应的值 第一次循环, foreach将$v 设置成 $arr[0]就是a,因为引用的存在等同于将$arr[2]设置成a,所以此时的数组为 [‘a’,’b’,’a’] 第二次循环,foreach将$v设置成$arr[1]就是b ,因为引用的存在等同于将$arr[2]设置成b,所以此时的数组为 [‘a’,’b’,’b’] 第三次巡考,foreach将$v设置成$arr[2]就是b(这里大家可能有点困惑,为啥是b呢? 因为foreach是逐行执行的,在第二次循环的时候已经将$ar[2]设置成了b,所以此时的$arr[2]也是b),因为引用的存在等同于将 $arr[2]设置成b,所以最后的结果是[‘a’,’b’,’b’];