PHP

PHP 线程,进程和并发

进程

进程是什么?进程是正在执行的程序;进程是正在计算机上执行的程序实例;进程是能分配给处理器并由处理器执行的实体。 进程一般会包括指令集和系统资源集,这里的指令集是指程序代码,这里的系统资源集是指I/O、CPU、内存等。 综合起来,我们也可以理解进程是具有一定独立功能的程序在关于某个数据集合上的一次运行活动, 进程是系统进行资源分配和调度的一个独立单位。

在进程执行时,进程都可以被唯一的表示,由以下一些元素组成:…

            

PHP异步并发访问mysql简单实现

在实际的开发过程中,我们常常会遇到需要操作多张表,多个库的情况。有时因为一些限制我们不能进行连表(例如,异地数据库),所以只能用php串行访问后再在php里进行合并,有时还需要模拟mysql对合并后的结果进行排序、归并等。

这里产生的一个问题就是串行带来的访问时间问题。由于传统的串行访问方式,我们只能等到一条sql执行完毕后才可以执行下一条,所以执行时间是累加的。PHP官方手册提供了一种可以异步并发访问mysql的方式,详见:http://php.net/manual/zh/mysqli.poll.php,参考资料:https://svn.osgeo.org/mapguide/sandbox/rfc94/Oem/php/ext/mysqli/tests/mysqli_poll.phpt,使用此种方式,我们可以对Mysql进行异步并发访问,访问时间不再是串行累加,而是取决于执行时间最长的sql。…

            

关于PHP你可能不知道的-PHP的事件驱动化设计

最近在做一个需要用到异步PHP的项目, 翻阅PHP源码的时候,发现了三个没有用过的模块,sysvsem,sysvshm,sysvmsg,一番研究以后,受益非浅。

在PHP中有这么一族函数,他们是对UNIX的V IPC函数族的包装。
它们很少被人们用到,但是它们却很强大。巧妙的运用它们,可以让你事倍功半。…

    

curl_init()和curl_multi_init()多线程的速度比较

php中curl_init()的作用很大,尤其是在抓取网页内容或文件信息的时候,例如之前文章curl获得header检测GZip压缩的源代码就介绍到curl_init()的强大。
curl_init()处理事物是单线程模式,如果需要对事务处理走多线程模式,那么php里提供了一个函数curl_multi_init()给我们,这就是多线程模式处理事务的函数。
curl_init()与curl_multi_init()的速度比较
curl_multi_init()多线程能提高网页的处理速度吗?今天我通过实验来验证一下这个问题。
今天我的测试很简单,那就是要抓取www.webkaka.com网页的内容,要连续抓5次,分别用curl_init()和curl_multi_init()函数来完成,记录两者的耗时,比较得出结论。
首先,用curl_init()单线程连续抓5次www.webkaka.com网页的内容。…

    

PHP实现多线程抓取网页

PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持多线程,所以开发爬虫程序效率并不高,这时候往往需 要借助Curl Multi Functions 它可以实现并发多线程的访问多个url地址。既然 Curl Multi Function如此强大,能否用 Curl Multi Functions 来写并发多线程下载文件呢,当然可以,下面给出我的代码:

代码1:将获得的代码直接写入某个文件

    

看完这些 领悟PHP本身技能应该是很牛逼了

原文作者:Taylor Otwell

网上偶得此书,是Laravel的作者写的。 Laravel是近年来优秀的PHP框架,国内外都有很多支持者。该框架应用了大量PHP5尤其是5.3以后的新特性,使得后端的开发进一步的简便而灵活。具体可以看这里 http://www.laravel.com
作者写的这本书详细介绍了Laravel框架涉及的各种软件理念和工具,如依赖注入、控制反转容器、面向接口编程等。
我读来收获颇丰,所以希望翻译成中文以飨读者。…

thinkphp 框架 静态化,生成html

thinkphp  框架  静态化,生成html

使用thinkphp自带的buildHtml方法.

$this->buildHtml($Id, HTML_PATH .MODULE_NAME.CONTROLLER_NAME.ACTION_NAME. '/', '');

读取的时候,不经过php,直接读html文件, 需要nginx rewrite.

生成 html时,可在管理后台,的方法里加上面buildHtml方法生成.

前台或后台,每更改一次页面,要重新生成一次html.

此适用于非实时的 thinkphp页面.

可极大提高thinkphp的性能.…