代码改变世界

随笔分类 -  PHP

PHP如何将进程作为守护进程

2013-08-29 10:02 by 轩脉刃, 2973 阅读, 收藏, 编辑
摘要: 看了这篇:http://blog.codinglabs.org/articles/write-daemon-with-php.html 对里面的posix_setsid()不解 文档解释是“Make the current process a session leader” 参考文档:http://linux.die.net/man/2/setsid 意思就是在一个进程组之间(父进程和子进... 阅读全文

说说jsonp

2013-07-29 09:32 by 轩脉刃, 4099 阅读, 收藏, 编辑
摘要: 什么是jsonp jsonp充其量只能说是一种“方法”。它可以让页面从其他域中获取资料。 首先要知道的是同源策略,在javascript中使用http请求(ajax)是会受到同源策略的限制的。A网站的页面是不能在javascript中访问B网站的资源的。但是,对于这种希望A网站访问B网站的资源的需求怎么办呢?(跨域访问)。jsonp就出现了。 html中虽然说javascript... 阅读全文

PHP的pcntl多进程

2013-07-26 18:03 by 轩脉刃, 20739 阅读, 收藏, 编辑
摘要: PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用pcntl函数了。 假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出: $max = 800000; $workers = 20; ... 阅读全文

谈谈不换行空格

2013-07-26 09:37 by 轩脉刃, 13392 阅读, 收藏, 编辑
摘要: 昨天工作中遇到了一个问题问题:php程序从数据库中取出变量$a(值为"car ws"),经过iconv转码从utf8到gb2312后,赋值给$b,结果判断语句$a == $b 竟然是false! 究其原因原来是这里的空格是不换行空格。 什么是不换行空格? 不换行空格(non-blocking space)也是一种空格,它和普通空格的区别在于在排版的时候表现不同。比如在word中,下面一段话在... 阅读全文

PHP的语言构造器

2013-07-12 23:07 by 轩脉刃, 1204 阅读, 收藏, 编辑
摘要: isset和empty看起来像是函数,我们也经常把它当作函数一样使用,但是实际上,它们是语言构造器。 php中的语言构造器就相当于C中的预定义宏的意思,它属于php语言内部定义的关键词,不可以被修改,也不可以被禁用。 php中的函数就不一样了,它是函数,在执行的时候会被解析,然后传入参数计算。 所以函数的执行效率没有语言构造器高 比如我们判断一个array中是否包含一个key,使用isse... 阅读全文

nginx配置client_body_temp_path

2013-07-12 22:47 by 轩脉刃, 13637 阅读, 收藏, 编辑
摘要: http://wiki.nginx.org/HttpCoreModule 中写道: 这里的client_body_temp_path是制定post上传的$_FILES上传的文件地址 后面的level1,2,3是什么意思? 因为如果所有上传的文件都放在一个文件夹下,不仅很容易文件名冲突,并且容易导致一个文件夹特别大。 所以有必要创建子目录 这里的level1,2,3如果有值就代表存在... 阅读全文

PHP使用APC获取上传文件进度

2013-07-05 12:00 by 轩脉刃, 5837 阅读, 收藏, 编辑
摘要: 今天发现使用PHP的APC也能获取上传文件的进度。这篇文章就说下如何做。 安装APC 首先安装APC的方法和其他PHP模块的方法没什么两样,网上能找出好多 phpinfo可以看到APC的默认配置有: apc.rfc1867 看apc.rfc1867这个配置项: http://cn2.php.net/manual/en/apc.configuration.php#ini.apc.rf... 阅读全文

mmap学习

2013-07-04 10:17 by 轩脉刃, 3896 阅读, 收藏, 编辑
摘要: 内存页: Linux是以页为单位来管理物理内存的,一页大小一般等于4096字节。页容量越大,系统中可能存在的内存碎片就越多。 mmap将一个磁盘上的文件或者对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。 当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用。 采... 阅读全文

Mysql的优化一则

2013-07-02 10:51 by 轩脉刃, 1404 阅读, 收藏, 编辑
摘要: 目的在于这么一个sql语句: SELECT w.* FROM wallpaper w inner join wallpaper_category_relation r ON w.wallpaper_id = r.wallpaper_id WHERE (r.category_level1_id=39 AND w.is_online = 1) ORDER BY w.online_time DES... 阅读全文

PHP 5.5 新特性

2013-07-01 10:21 by 轩脉刃, 27020 阅读, 收藏, 编辑
摘要: PHP5.5 前不久前刚刚发布,里面的新特性有什么?官方文档在这里: http://www.php.net/manual/zh/migration55.new-features.php 1 生成器 yield关键字 yield的中文文档在这里:http://php.net/manual/zh/language.generators.overview.php 查看文档,能知道yield的一个... 阅读全文

Symfony学习--HttpKernel组件

2013-05-29 17:04 by 轩脉刃, 2419 阅读, 收藏, 编辑
摘要: http://symfony.com/doc/2.1/components/http_kernel/introduction.html HttpKernel这个类提供的功能说白了就是将Request转换成Response。它使用一个流程的工作流似的方式。 整个流程图大致如下: HttpKernel最核心的是handle(); 它的工作就是将上图的Request转换成Response。 ... 阅读全文

Symfony学习--目录和入口

2013-05-16 10:09 by 轩脉刃, 6239 阅读, 收藏, 编辑
摘要: 1 目录结构 根目录下有: app src vendor web app是存放应用的一些配置文件,如果有一些配置文件或者文档,应当存放在这里面。 src是存放你的项目的php代码,这里的php至少必须是5.3,因为symfony中使用了命名空间的概念。 vendor是存放第三方代码的目录,这个目录可能非常庞大,因为symfony大量使用了第三方bundle的概念,连自身都是作为一个... 阅读全文

PHP的命名空间

2013-05-14 10:06 by 轩脉刃, 39290 阅读, 收藏, 编辑
摘要: PHP的命名空间(namespace)是php5.3之后才有的。这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。 为什么php中要使用namespace? 假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespac... 阅读全文

PHP知识点笔记

2013-05-10 11:18 by 轩脉刃, 3180 阅读, 收藏, 编辑
摘要: 显示错误:PDOException could not find driver. 是表示PDO没有安装对应数据库的扩展,比如没有安装PDO_mysql http://pecl.php.net/package/PDO_MYSQL 下载源码 phpize ./configure --with-php-config=/usr/local/php/bin/php-config./make ./make i... 阅读全文

服务端开发小感

2013-03-22 09:45 by 轩脉刃, 25048 阅读, 收藏, 编辑
摘要: 从事服务端开发已经有一些日子了,静下来可以想想和记录些服务端开发的想法了。服务端开发,特别是Web开发,基本上全是处理HTTP请求的处理。根据具体用途分为两种:Web页面开发和API接口开发。Web页面开发也完全可以看成是API接口开发,只是它的两个主要部分,页面和ajax请求,一个是返回html,另外一个可以返回html,也可以返回其他格式的而已。API接口开发是针对有客户端产品而言的。可能是移动设备,可能是PC应用等。应用框架应用框架一般使用的是LNMP或者LAMP,基本的框架就是前端N台Web服务机 + cgi访问PHP + php访问mysql。PHP可以看成是C写的一个大型的Web框 阅读全文

PHP执行批量mysql语句

2012-11-06 15:23 by 轩脉刃, 7147 阅读, 收藏, 编辑
摘要: 当有多条mysql语句连起来需要执行,比如 $sqls= “insert table a values(1,2); insert table a values(2,3);” 需要执行的话php中可以使用的方法有三个: mysql_query pdo mysqli 三种方法当sqls语句没有问题的时候都是可以的。 但是 当sql语句是错误的时候会出现问题 第一条sql错... 阅读全文

mysql多个TimeStamp设置

2012-11-02 12:58 by 轩脉刃, 42773 阅读, 收藏, 编辑
摘要: timestamp设置默认值是Default CURRENT_TIMESTAMP timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP 但是由于 一个表中至多只能有一个字段设置CURRENT_TIMESTAMP 两行设置DEFAULT CURRENT_TIMESTAMP是不行的。 还有一点要注意 CREATE TABLE `device` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `toid` INT(10) UNSIGNED NOT NULL DEFAULT ... 阅读全文

PHP的闭包

2012-10-29 14:27 by 轩脉刃, 30077 阅读, 收藏, 编辑
摘要: php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。 闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。 $a = function() use($b) {}闭包的几个作用:1 减少foreach的循环的代码比如手册http://php.net/manual/en/functions.anonymous.php 中的例子Cart<?php// 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。// 其中有一个方法用来计算购物车中所有商品的总价格。该方法使用了一个closure作为回调函数。class Cart{ const PRI.. 阅读全文

阅读杂记(RSA,PDO)

2012-10-19 16:56 by 轩脉刃, 1166 阅读, 收藏, 编辑
摘要: RSA算法 RSA Key Size Selection http://www.vocal.com/cryptography/rsa-key-size-selection/ 这篇文章说的是如何选择RSA密钥的长度。RSA密钥的长度是可以选择的,RSA密钥的长度影响加密后的长度,可以加密的串长度,加密和解密的时间。 简单来说就是: 1 密钥长度和可加密的字符串长度成正比。RSA的密钥... 阅读全文

知识杂记

2012-10-16 20:38 by 轩脉刃, 1608 阅读, 收藏, 编辑
摘要: Fixing Poor MySQL Default Configuration Values http://jeremy.zawodny.com/blog/archives/011421.html 这篇是Jeremy Zawodny的一篇文章他指出了几个不好的Mysql默认配置项。 首先是max_connect_errors和connect_timeout。 mysql有这样的行为: 如果客户端连接Mysql失败,服务器就会在等候connect_timeout秒之后放弃等候,并且增加连接错误的计数器。然后,当值达到了max_connect_errors的时候,服务器会将这个客... 阅读全文