php
进哥说Java面试
这个作者很懒,什么都没留下…
展开
-
php中大括号的用法和意义{}
在PHP中,大括号“{}”可以起到如下作用:将多个独立语句合并为一个复合语句,例如 if ... else ...中经常如此使用在变量间接引用中进行定界,避免歧义。例如 ${$my_var[8]}与${$my_var}[8]的区分用于指示字符串变量中的单个字符(下标从0开始),例如$my_str="1234";$my_str{1}='5'; //现在 $my_str 内容为 '1转载 2016-04-27 22:48:22 · 474 阅读 · 0 评论 -
自己动手实现promise
大家都知道,异步编程在web领域内越来越多地运用,但异步回调代码的写法十分恶心,逐层嵌套,不便于阅读。为了解决这个问题,js实现了promise模式,但大多数开发者只知道promise的表面用法,不知其底层实现逻辑。笔者采用PHP实现了自己的promise,借着此过程,与大家分享promise的实现原理。原创 2017-07-22 10:31:11 · 1143 阅读 · 0 评论 -
聊聊服务化
本文适合对SOA和服务化比较感兴趣的同学阅读,需要具备一定的web后台基础知识。原创 2017-07-16 20:00:52 · 2628 阅读 · 0 评论 -
PHP开发web程序的两种模式
从执行流程上来看,所有程序可以分为同步程序和异步程序。众所周知,同步程序流程清晰,开发友好,容易上手,相比之下异步程序的优点在于程序并发度高,资源能够得到充分利用。于是出现了一些基于协程调度的框架,兼具同步程序和异步程序的优点。对应到php领域,除了传统的LAMP/LNMP同步开发模式,还出现了类似swoole的异步协程开发模式。本文通过对两种开发模式进行比较,旨在说明二者实现上的异同,供广大PHP程序员参考。原创 2017-07-16 19:58:32 · 6195 阅读 · 0 评论 -
PHP HTTP客户端-Guzzle原理解析
在PHP后台开发过程中,经常会遇到模块间需要通过HTTP通信的情形。PHP语言本身只提供了socket操作的接口,并未提供HTTP相关操作的接口。许多现有的实现采用curl扩展充当HTTP Client与HTTP Server通信,但仍需自己封装curl的接口。有鉴于此,本文介绍一款流行的PHP HTTP Client客户端---Guzzle(https://github.com/guzzle/guzzle/)的用法,深入分析其底层实现原理。原创 2017-07-16 19:55:59 · 8319 阅读 · 2 评论 -
php 异步websocket客户端实现
php 异步websocket客户端原创 2017-06-15 21:35:29 · 7094 阅读 · 0 评论 -
composer autoload原理浅析
最近读了一点laravel的代码,里面用到composer,感觉其中的autoload机制有点诡异,翻阅源码,有所得,故记载之。使用composer下载包之后,需要require "vendor/autoload.php",所以就从入口文件着手。1.autoload.php => composer/autoload_real.php/getLoader() => $loader = new原创 2016-10-16 19:21:51 · 2462 阅读 · 0 评论 -
composer原理与使用简介
说到php,难免会触及到composer,尤其像laravel、CI这样的框架,随处可见composer的身影。在使用上,composer只需要一个文件即可,composer.phar。此文件可在https://getcomposer.org/composer.phar上下载,当然,也可以采用全局安装等方式,具体见官方文档,但最简单的还是一个文件搞定。添加文件到PATH路径,这样就可以随处原创 2016-10-16 18:41:24 · 4022 阅读 · 0 评论 -
PHP命名空间(Namespace)的使用详解
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结。命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。例:项目中有两个模块:article和message board,它们各自有一个处理用户留言的类Comment。之后我可能想要增加对所有转载 2016-08-14 21:23:26 · 369 阅读 · 0 评论 -
iostat用法小结
1. 基本使用$iostat -d -k 1 10参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。$iostat -d -k 1 10Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 39.29 21.1转载 2016-08-06 20:32:54 · 707 阅读 · 0 评论 -
PHP-FPM on highload tips
When you running a highload website with PHP-FPM via FastCGI, the following tips may be useful to you : ) 1. Compile PHP's modules as less as possible, the simple the best (fast); 2. Incre转载 2016-08-02 17:15:17 · 400 阅读 · 0 评论 -
php-fpm占用系统资源分析
故障检测1.别的先不管,先top看一下cpu、ram、swap哪个比较紧张。 由上图分析,可以看出共有602个进程,其中有601个进程休眠了。这好像有点不对劲,内核进程也就80个左右,加上memcached, nginx, mysqld,也不会超出90个。除了这些,剩下的只有php-fpm管理的php-cgi,难道是…?CPU显示,CPU压力并不大,可以说转载 2016-08-02 17:01:11 · 2535 阅读 · 0 评论 -
linux使用crontab实现php定时任务
首先说说cron,它是一个linux下的定时执行工具。根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在/var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令来编辑该用户的 crontab。该文件使用的格式和 /etc/cr转载 2016-08-02 14:52:55 · 1488 阅读 · 0 评论 -
彻底理解PHP的SESSION机制
一、默认机制,用磁盘文件来实现PHP会话。php.ini配置:session.save_handler = files 1、session_start() A、 session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中, PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php.i转载 2016-07-27 15:16:39 · 293 阅读 · 0 评论 -
CSRF 攻击的应对之道
CSRF 背景与介绍CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 20转载 2016-07-27 11:18:05 · 469 阅读 · 0 评论 -
nginx内置预定义变量
nginx的配置文件中可以使用的内置变量以美元符$开始,也有人叫全局变量。其中,部分预定义的变量的值是可以改变的。$arg_PARAMETER 这个变量值为:GET请求中变量名PARAMETER参数的值。$args 这个变量等于GET请求中的参数。例如,foo=123&bar=blahblah;这个变量只可以被修改$binary_remote_addr 二进制码形式的客户端转载 2016-06-18 22:16:21 · 419 阅读 · 0 评论 -
php安装redis扩展
php安装redis扩展需要先安装php,关于php安装的步骤见http://blog.csdn.net/xhjcehust/article/details/50987278接下来安装redis,git clone https://github.com/antirez/redis.git,.make && make install这时在/usr/lib/php/modules或者/usr/原创 2016-07-18 21:36:45 · 1821 阅读 · 0 评论 -
ubuntu源码编译安装php
获取PHP源码:wget http://cn2.php.net/get/php-5.5.9.tar.gz/from/this/mirror依赖库安装:sudo apt-get install libxml2-devsudo apt-get install libcurl3-openssl-devsudo apt-get install libcurl4-gnutls-d原创 2016-03-26 15:57:37 · 3639 阅读 · 0 评论 -
ORM选型—DataMapper VS ActiveRecord
在web后台开发领域,经常会遇到应用程序操作数据库的场景,目前市面上存在的数据库包括mysql、postgresql、oracle、sqlite等,为了屏蔽不同数据库的差异,产生了ORM(Object-Relation-Mapping),在实现层面,又分为DataMapper和ActiveRecord两种。原创 2017-07-30 09:13:07 · 6962 阅读 · 0 评论