小巧PHP框架cola的运行加载过程分析
因公司一项老业务交接给了我,最近开始看老业务的代码,代码使用的Cola框架,之前我也没用过。但框架都长那样,之前看过CI,laravel,也啃过一点YII,现在又有好久没有接触框架了,于是就想简单看一下这个框架的运行过程。话不多说,开始吧: 入口文件在定义基本目录路径之后,加载Cola.php和配置文件,然后做了三件事。分别是getInstance(),boot(),dispatch()代码如下: requireCOLA_DIR.'/Cola.php'; Cola::getInstance()->boot($config)->dispatch(); &nbs...[>>…]
php多进程开发中常用的PCNTL常用的函数
PHP进程控制函数库(PCNTL),使php能在类unix系统中实现跟c一样的创建子进程、使用exec函数执行程序、处理信号等功能。PCNTL使用ticks来作为信号处理机制(signalhandlecallbackmechanism),可以最小程度地降低处理异步事件时的负载。Tick是一个在代码段中解释器每执行N条低级语句就会发生的事件,这个代码段需要通过declare来指定。php多进程开发中常用的PCNTL常用的函数列表如下:1.pcntl_alarm(int$seconds)设置一个$seconds秒后发送SIGALRM信号的计数器2.pcntl_signal(int$signo,callbac...[>>…]
php利用PCNTL库进行多进程脚本的开发-多进程消化队列程序逻辑
php多进程开发不适合于WEB开发,主要是用于的任务处理,比如对前端提交的数据进行入库或者计算等,php多进程模块依赖php中的pcntl扩展,此扩展在Windows平台上是不可用的。我这里今天只用一个很简单的例子。功能:使用php启动两个单独进程向redis写入数据,每个进程写10条数据然后关闭此进程,重新启一个进程再进行写。新建一个test.php文件,代码及解释如下: //必须加载扩展 if(!function_exists("pcntl_fork")){ exit("pcntlextentionismust!"); } //初始化一些参数 $worker_pids=array(...[>>…]
composer常用命令列表
composer常用的命令列表如下:composerinstall命令(composer.lock与composer.json) 如果当前目录下存在composer.lock文件,则从此文件读取依赖版本,否则就读取composer.json文件,处理依赖关系,把依赖安装到vendor目录成功后并创建composer.lock文件。composer.lock相当于一个当前使用各依赖的一个版本的缓存,防止随意修改升级带来问题。在修改了composer.json但是没有修改composer.lock的时候执行install命令会提示没有修改不需要更新,这时需要删除composer.lock文件以重新install.composerupdate升级依...[>>…]
linux下composer小记:Do not run Composer as root/super user!
之前在测试一段PHP程序时,总是报找不到PHP类文件,当前因为需要着急解决问题,就把文件直接引入从而解决了问题,今天看了一下,因为文件里面加载了vendor,而vendor目录下面在autoload_real.php引入的其它文件autoload_classmap.php,autoload_namespaces.php,autoload_psr4.php这些文件里都有绝对路径(因为是composer生成的),导致的加载不上。于是要解决就必须重新composer,以更新路径。centos下安装composer,注(我这里也对比发现了程序里用的是老一代的vendor,新一代的vendor都的路径$...[>>…]
php中常用的一致性哈希的算法类flexihash
数据分库分表,数据分片处理是业务数据增长到一定阶段后都会碰到的问题,对于一般的分库分表多是通过自定义的数据分类来达到分片,但在大数据分片上仍然使用自定义数据分片的话非常不利于扩展,这也就是一致性哈希算法的需求初衷。 例如我们业务中会涉及到很多Redis数据存储,开始的时候redis服务器并不多,也就是使用了最简单的方式通过在业务代码里对key进行hash计算再和存储实例个数进行对比进行分别存放,后来业务量加大增加到了60多个redis实例进行数据存储,这...[>>…]
全国各省主要城市经纬度数据表sql文件下载
准备娱乐一下,使用python开发一个小型的网站,因此从网上复制了一些文本(暂时没有找到sql文件数据),经python处理优化成了以下的sql数据库,分享出来,包括省名称、拼音、城市名称及拼音、城市的经纬度数据。下载地址:全国各省主要城市经纬度数据表sql文件下载截图如下:[>>…]
php中json_decode解析bigint大数据的问题以及科学计数法的显示转换
如下php代码,对于json中的bigint大数字数据,在json_decode的一般解析出来后,得到的大数字是经过科学计数法展示出来的。再通过number_format进行转换输出发发现已经和原来的数据不一样的了。 echo'<pre>'; $test=array('id'=>'181601920729896967','name'=>'test'); echojson_encode($test);echo'<br>'; $json='{"id":181601920729896967,"name":"test"}'; $data=json_decode($json,true); print_r($data); $str=number_format($data['id'],0,'',''); print_r($str); $newdata=json_decode($json...[>>…]
nginx响应504的超时问题及php的慢日志事宜
服务器最近偶尔报504,属于接口处理超时,排查在proxy服务器上发现部分接口在执行时有时达到了超时时间60ms,有的接口为59.999: 221.229.202.75--[15/Mar/2018:10:25:25+0800]api..com504176192.168.162.14:8060.000-504"-""-""-""GET/caindex?uid=866067031604590&scre=30&unet=1&operator=3&loc=DH.EGJIK%2CCCK.BKGCFE&active_id=1521074825304&areq=5&preload=0&card_id=13618&content_id=15231295&pageid=1&platf=andid&g=31&mtype=h...[>>…]
一次上线碰到的502问题及php异常追踪
今天在上线时遇到了一些502报错,但并非大量,在上线后的几分钟里报了个几十条,程序中已经使用了register_shutdown_function方法捕获最终的异常并进行报错记录,但这次发生502时,PHP程序根本未记录任何错误。查看web里的nginx报错日志如下: 2017/12/2617:03:00[error]11589#0:*202518654recv()failed(104:Connectionresetbypeer)whilereadingresponseheaderfromupstream,client:192.168.168.164,server:04007.cn,request:"GET/search/AF04A6B6C9B45D9624514HTTP/1.1",upstream:"fastcgi:/...[>>…]