解决Nginx环境下PHP的flush失效问题

我在一次调试PHP逐行输出时候,发现ob_flush和flush两个都失效了,通过phpinfo基本能判断php.ini的设置是正常的。

再去看Nginx,发现Nginx中,有如下的设置:

fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;

问题基本找到了,Nginx会缓冲PHP输出的信息,当达到128k时才会将缓冲区的数据发送给客户端,那么我们首先需要将这个缓冲区调小,比如:

fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;

并且,必须禁用gzip

gzip off;

然后,在php中,在ob_flush和flush前,输出一段达到4k的内容,例如:

echo str_repeat(' ', 1024*4);

到此,PHP就可以正常通过ob_flush和flush逐行输出需要的内容了。

自动加载jQuery的Javascript代码示例

当我们在Javascript里需要用到jQuery但又无法判断是否加载过时,可以通过下面的方法来自动判断并加载jQuery,代码如下:

阳光部落原创,更多内容请访问http://www.sunbloger.com/

Javascript闭包实现Ajax在for循环中正常运行

假设我们现在需要在一个for循环中通过异步的方式向一个后端php程序请求数据,常规的写法Ajax是无法正常工作的,网上也有不少的解决方案,这里提供一个闭包方案,详细如下:

Javascript代码如下:

阳光部落原创,更多内容请访问http://www.sunbloger.com/

PHPCMS后台入口地址隐藏方法

1.在站点跟目录新建一个目录,目录名自定,例如manage,这个manage目录就是今后你登陆后台需要访问路径。

2.在manage目录里新建一个index.php文件,代码如下:

3.找到\phpcms\modules\admin目录,在这个目录中新建一个名为MY_index.php的文件,代码如下:

最后,将上面新建的目录和文件上传至服务器对应的路径后,你的PHPCMS站点就只能通过http://www.xxx.com/manage/这样的地址访问后台的登录入口了。

备注:上述方法仅针对PHPCMS V9版。

CentOS 7.0正式发布 新特性汇总

7月8日消息,基于Red Hat红帽免费公开的源代码的CentOS 7最新版正式发布,其基于企业级的Linux发行版本,是目前最受欢迎的Linux系统之一。

CentOS 7首个正式版的版本号为7.0.1406,主要更新内容如下:

— 内核更新至 3.10.0
— 支持 Linux 容器
— Open VMware Tools 及 3D 图像能即装即用
— OpenJDK-7作为缺省 JDK
— 原地升级 6.5 至 7.0
— ext4 及 XFS 的 LVM 快照
— 转用 systemd、firewalld 及GRUB2
— XFS 作为缺省文件系统
— 内核空间内的 iSCSI及FCoE
— 支持PTPv2
— 支持40G乙太网络卡

CentOS官方已经放出CentOS7.0.140 64位的版本下载地址,一如每个主要版本的首个发行本,多数组件都已作出改动及更新至较新版本。最重大的改动有包括内核更新至3.10.0、支持Linux 容器、Open VMware Tools 及 3D 图像能即装即用等。
下载地址:www.centos.org。

在Linux中将目录压缩打包为zip文件 并通过ftp上传的Shell脚本

下面的shell脚本是将/opt下yyyymmdd格式的目录压缩打包为bak_yyyymmdd.zip,并通过ftp上传到192.168.0.2上的bak目录下。

阳光部落原创,更多内容请访问http://www.sunbloger.com/

苹果消息推送服务(APNS)的PHP版服务器端公共类

APNS(全称:Apple Push Notification Service),翻译为:苹果消息推送服务。

下面的代码是用PHP语言编写的一个公共类,用来完成从服务器端向APNS Server推送消息的过程。(这个类被应用在新京报新闻这个App的消息推送服务器端)

阳光部落原创,更多内容请访问http://www.sunbloger.com/

用PHP解析XML为数组的方法

XML——可扩展标记语言 。

可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。

它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

PHP5已经内置的用于解析XML的函数,但使用起来并不顺手,于是就有了下面这段代码:

 

一段经典的抽奖算法 for PHP版

首先,我们构造一个奖项数组:

上面的数组中,No.1代表1等奖,以此类推,No.5代表5等奖,而Sorry代表没有中奖。v代表概率。

继续,我们看看算法的代码:

上面的代码从1等奖开始,根据概率逐一计算每个奖项是否中出,直至最后没有中奖。

究竟这个算法是否准确,我们来模拟一下:

上面代码的模拟结果输出:

通过模拟结果可以看出,这个算法还是很靠谱的。

阳光部落原创,更多内容请访问http://www.sunbloger.com/

预防注入的4条建议

1.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等;

2.不要仅仅验证数据的类型,还要验证其格式、长度、范围和内容;

3.不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行;

4.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查; Continue Reading