PHP
文章平均质量分 81
熊猫猛男
1.科技发展太快,日新月异,互联网/移动互联网/IOT,我只懂了一点点; 2.社会发展太快,用眼、用心、用行动却已无法追逐其前行的脚步。
展开
-
Standard PHP Library(SPL)中的数据结构
SPL提供了一组标准数据结构。 SplDoublyLinkedList Class:双向链表(DLL)是在两个方向上相互链接的节点列表。当底层结构是dll时,迭代器的操作、对两端的访问、节点的添加或删除均是O(1),为堆栈和队列提供了良好的实现 SplDoublyLinkedList::add — Add/insert a new value at the specified index Sp原创 2017-07-17 09:27:56 · 249 阅读 · 0 评论 -
Docker笔记二:Lumen + Redis
Lumen 基于 Laravel 打造,专为构建微服务和 APIs 而生;Redis 与 Memcached 均为常用的 key-value 内存对象缓存服务(系统),免费开源,Redis 支持持久化,但Memcached 不支持持久化,Redis 与 Memcached 均可进行集群化部署。Lumen与Redis服务端通信可通过Predis(PHP库)或者PhpRedis(PHP的C扩展)来实现原创 2017-07-17 09:26:50 · 1094 阅读 · 0 评论 -
PHP开发要点与技巧总结(一)
Lambda表达式(匿名函数)实现了一次执行且无污染的函数定义,是抛弃型函数并且不维护任何类型的状态。闭包在匿名函数的基础上增加了与外部环境的变量交互,通过 use 子句中指定要导入的外部环境变量。C字符串以空字符('\0')为结束标志,这使得C字符串不能保存像图片、音频、视频、压缩文件这样的二进制数据,反之则称作二进制安全的。这个概念在PHP中经常提到,此处只做个简单解释。下面是Redis 简单动态字符串(SDS)的实现,它是二进制安全的。删除引用,触发相应变量容器refcount减一,但在函数中的行为会原创 2017-10-18 20:49:52 · 765 阅读 · 0 评论 -
PHP垃圾回收机制
实现垃圾回收机制的整个原因是为了通过清理循环引用的变量来节省内存占用。 引用计数:php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息:is_ref和refcount。is_ref是个bool值,用来标识这个变量是否是属于引用集合,php引擎才能把普通变量和引用变量区分开来;refcount用以表示指向这个zval变量容器的变量个数原创 2017-07-17 09:27:46 · 792 阅读 · 0 评论 -
PHP对象相关知识点的总结
对象传递:一种说法是“PHP对象是通过引用传递的”,更准确的说法是别名(标识符)传递,即它们都保存着同一个标识符(ID)的拷贝,这个标识符指向同一个对象的真正内容,与引用(&)有质的区别,请比较下例中行11和行18的输出结果。 1 php 2 class A { 3 public $foo = 1; 4 } 5 6 $a = new A; 7 $b = $a;原创 2017-07-17 09:26:57 · 214 阅读 · 0 评论 -
再读设计模式七原则
GOF《设计模式》一书中提出了七条设计原则,七原则是一种理想状态的表达,但实际项目开发中可能会不得不打破这些原则的限制。1. 单一职责原则(Single Responsibility Principle, SRP): There should never be more than one reason for a class to change. 言下之意做到类只承担单一职责(最细粒度)也就能尽可...原创 2017-09-25 20:38:53 · 367 阅读 · 0 评论 -
Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
在编辑Dockerfile过程中参考了以下相关范例:https://hub.docker.com/_/php/、https://hub.docker.com/_/mysql/、https://hub.docker.com/_/nginx/。在build镜像时可能报出异常“containerd: container not started”,此时可能需要重启containerd或系统。要删除某些无用...原创 2017-01-04 19:54:32 · 11293 阅读 · 0 评论 -
Laravel框架一:原理机制篇
Laravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特点。 一. 请求周期 Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件。 注册类文件自动加载器:Laravel通过composer进行依赖管理,并在bootstrap/autoload.php中注册了Composer Auto Loader (PSR-4),应原创 2017-07-17 09:27:02 · 383 阅读 · 0 评论 -
关于Lumen / Laravel .env 文件中的环境变量是如何生效的
.env 文件可自定义其他任何有效的环境变量,并可通过 调用 env() 或 $_SERVER 或 $_ENV 来获取该变量。那么env()是如何加载到这些变量的呢?在Lumen的vendor/laravel/lumen-framework/src/helpers.php中,我们可以发现env函数是这样被定义的: if (! function_exists('env')) { /**原创 2017-07-17 09:27:48 · 2483 阅读 · 0 评论 -
PHP中的数据结构:DS扩展
PHP7以上才能安装和使用该数据结构扩展,安装比较简单: 1. 运行命令 pecl install ds 2. 在php.ini中添加 extension=ds.so 3. 重启PHP或重载配置 Collection Interface:包含本库中所有数据结构通用功能的基本interface。 It guarantees that all structures are traversa原创 2017-07-17 09:27:53 · 553 阅读 · 0 评论 -
PHP-FPM进程池探秘
PHP 7.2以前的版本只支持多进程而不支持多线程;PHP 7.2+ pthreads 扩展提供了Thread、Worker、Threaded 对象,使得创建、读取、写入以及执行多线程成为可能,并可以在多个线程之间进行同步控制;pthreads 多线程开发也仅限于命令行模式,不能用于 web 服务器环境中。 PHP-FPM 在进程池中运行多个子进程并发处理所有连接请求。通过 ps 查看PHP原创 2017-10-16 19:53:06 · 1010 阅读 · 0 评论