CI使用注意事项

开启session

session_start();放在require_once BASEPATH.'core/CodeIgniter.php';之前。

index是CI保留字,不能作为控制器类名。

控制器的方法名不能和类名相同

1
2
3
4
5
6
7
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');  

class Login extends CI_Controller {
public function login() {
echo 'succ';//无法输出此行,显示404 Page Not Found
}
}

Read More

php ob_flush() flush() 函数不起作用的原因

1
2
3
4
5
6
7
8
9
<?php  
for($i = 1; $i <= 300; $i++) print(" ");
// 这一句话非常关键,cache的结构使得它的内容只有达到一定的大小才能从浏览器里,输出针对ie // 换言之,如果cache的内容不达到一定的大小,它是不会在程序执行完毕前输出的。经 过测试,我发现这个大小的底限是256个字符长。这意味着cache以后接收的内容都会源源不断的被发送出去。
for($j = 1; $j <= 5; $j++) {
echo $j . "<br>";
//ob_flush();
flush(); //这一部会使cache新增的内容被挤出去,显示到浏览器上
sleep(1); //让程序"睡"一秒钟,会让你把效果看得更清楚
}

我估计大家观察到的现象会各有不同,有的人是等待了5秒,一下输出了 5 个数字,有的人是每隔一秒输出一个数字。

Read More

利用Ajax实现长连接(模拟推送,半长连接)

很多程序都可以通过socket来实现长连接,实现消息的即时推送。但由于http请求一般都是短连接,一次请求结束,就会断开与服务器的连接,服务器不能主动推送数据到客户端,而只能由客户端发起请求,但有些时候,需要在web上实现即时的消息传输,比如即时聊天、股票动态信息等。
在Ajax技术被发掘以前,在网页上实现无刷新的即时聊天,似乎是很困难的事情,但由于Ajax技术的兴起,人们可以进一步来挖掘它的潜力了,象gmail、google gtalk的网页版,都是Ajax长连接的重要应用,目前很多网站可能都已经在使用长连接技术了,比如SNS网站的即时聊天。

1.Ajax短连接方式实现网页聊天

自己画了一个模型图:

Read More

PHP ServerPush (推送) 技术的探讨

需求:

我想做个会员站内通知的功能。不想用以前的ajax查询,听说有个推技术。以下文章介绍的不错,来自转载,

==================================================================================

PHP中Push(推送)技术的探讨 [http://vistaswx.com/blog/article/php-server-push]

随着人们对Web即时应用需求的不断上升,Server Push(推送)技术在聊天、消息提醒尤其是社交网络等方面开始兴起,成为实时应用的数据流核心。这篇日志试图探讨的便是各种适合于PHP的Push的实现方式以及其优劣。

Read More

js如何获取object类型里的键值

最近遇到一个问题:

1
2
3
4
var obj = {"name1":"张三","name2":"李四"};  
var key = "name1";
var value = obj.key; //得到了"undefined"
value = obj.name1; //得到了"张三"

其实我是想动态给key赋值,然后得到key为多少所对就的值。但这种做法行不通,obj.key会去找obj下key为”key”所对应的值,结果当然是找不到喽。

Read More