Press "Enter" to skip to content

Tag: PHP

PHP运行模式

PHP有5种运行模式,常见的有4种: 1. cgi 协议模式 cgi模式:通用网关接口(Common Gateway Interface),它允许web服务器通过特定的协议与应用程序通信 调用原理大概为:用户请求 -> Web服务器接收请求 -> fork子进程调用程序/执行程序 -> 程序返回内容/程序调用结束 -> web服务器接收内容 -> 返回给用户 由于每次用户请求,都得fork创建进程调用一次程序,然后销毁进程,所以性能较低 2. fast-cgi 协议模式 fast-cgi是cgi模式的升级版,它像是一个常驻型的cgi,只要开启后,就可一直处理请求,不再需要结束进程 调用原理大概为:(web服务器fast-cgi进程管理器初始化,预先fork n个进程)…

Leave a Comment

PHP 生成与识别二维码

endroid/qrcode 生成二维码,第三方包,支持 composer php-qrcode-detector-decoder 识别二维码,第三方包,支持 composer。需要 php5.6 以上和 GD 库支持 Ubuntu安装zbar apt-get install zbar-tools 装好 zbar 之后就可以使用 zbarimg path/to/qrcode识别二维码

Leave a Comment

PHP利用多进程处理任务

PHP多进程一般应用在PHP_CLI命令行中执行php脚本,不要在web访问时使用 多进程处理分解任务一般要比单进程更快 首先查看php是否安装多进程模块 php -m | grep pcntl 创建子进程的函数fork php多进程的一些库函数手册:http://php.net/manual/zh/function.pcntl-fork.php pcntl_fork 在当前进程当前位置产生分支(子进程) 译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程号,而子进程得到的是0 一个fork子进程的基础示例: $pid = pcntl_fork(); //父进程和子进程都会执行下面代码 if ($pid == -1) { //错误处理:创建子进程失败时返回-1.…

Leave a Comment

MAMP PRO安装Redis扩展

更新MAMP PRO 5后,自带的有redis扩展,开启就好 >> 官方文档 安装Redis扩展(MAMP PRO 4) 由于MAMP PRO中有多个PHP版本,所以先确定需要安装扩展的PHP版本,这里我使用的版本是5.6.30 找到MAMP的安装路径,并找到PHP5.6.30的路径 cd /Applications/MAMP/bin/php/php5.6.30 下载phpredis源码 git clone https://github.com/nicolasff/phpredis.git 编译,生成redis.so cd phpredis /Applications/MAMP/bin/php/php5.6.30/bin/phpize ./configure –with-php-config=/Applications/MAMP/bin/php/php5.6.30/bin/php-config make 将生成的redis.so文件复制到相应文件夹中…

Leave a Comment

PHP上传文件大小限制

用php上传比较大的文件,有时候默认是不可以的,必须按照下面的方法修改php的配置文件。 配置php.ini文件,Ubuntu下路径:/etc/php5/apache2/php.ini 以上传500M以下大小的文件为例,查找以下选项并修改: # 打开文件上传选项 file_uploads = On # 上传文件上限 upload_max_filesize = 500M 如果要上传比较大的文件,仅仅以上两条还不够,必须把服务器缓存上限调大,把脚本最大执行时间变长 # post上传上限 post_max_size = 500M # 每个脚本的最大执行时间 max_execution_time = 1800 #…

Leave a Comment

TP框架实现事务操作的方法

ThinkPHP提供了单数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法: TP3.2 // 启动事务 M()->startTrans(); // 提交事务 M()->commit(); // 事务回滚 M()->rollback(); TP5.1 最简单的方式是使用 transaction 方法操作数据库事务,当闭包中的代码发生异常会自动回滚,例如: Db::transaction(function () { Db::table(‘think_user’)->find(1); Db::table(‘think_user’)->delete(1); }); 也可以手动控制事务,例如: // 启动事务 Db::startTrans();…

Leave a Comment