分类 PHP 下的文章
SAPISAPI指的是Server Application Programming Interface服务端应用编程端口,它是PHP与其他应用交互的接口。PHP脚本要执行有许多方式,直接在命令行下运行,或通过Web服务器,也可以嵌入其他程序中。SAPI提供了一个和外部通信的接口,常见的SAPI有:Cli, CGI,FastCGI。CliPHP的命令行运行模式。CGICGI即通用网关接口(common gatewag interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和Web服务器中的执行程序连接起来,它把客户端请求传递给服务器的执行程序(PHP-CGI),再把服务器执行程序的结果返还给客户端。CGI方式在遇到客户端连接请求时先要创建CGI的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用CGI方式的服务器有多少连接请求就会有多少CGI子进程,子进程反复加载是CGI性能低下的主要原因。当用户请求数量非常多时,会大量挤占系统的资源如内存和CPU等,造成效能低下。FastCGIFastCGI是CGI...
SAPI运行生命周期

SAPI运行生命周期

PHP PSR 代码标准PHP 资源列表PHP 设计模式用 PHP 的方式实现的各类算法合集建站系统Magento - 电商系统Flarum - 基于 PHP 和 Mithril.js 开发的轻社区Koel - 音乐社区禅道 - 项目管理软件Jitamin - 项目管理系统Kanboard - 项目管理工具Phproject - 项目管理系统Matomo - 开源 Web 统计软件,原 PiwikBookStack - 类 wiki 和在线书籍写作平台SmartWiki - 支持 Markdown 的文档工具Codiad - Web 在线 IDEMeEdu - 基于 Laravel 开发的在线点播系统PHP Server Monitor - 服务器监控工具基础框架Slim - 非常优秀的轻量级框架,适合开发小型 API 应用Symfony - 组件式框架,提供了众多优秀的 PHP 类库Laravel - 号称最优雅的 PHP 框架CodeIgniter4 - CodeIgniter 全新现代版本Yii 2ThinkPHP 5Zend FrameworkFlight - RESTf...
PHP优秀资源汇集

PHP优秀资源汇集

Python基于字典的字符串格式化如下:person = {'name':'bruce', 'number':'56778'} print("%(name)'s phone number is %(number)" % person)使用PHP实现类似功能:function sprintf_array($string, $array) { $keys = array_keys($array); $keysmap = array_flip($keys); $values = array_values($array); while (preg_match('/%\(([a-zA-Z0-9_-]+)\)/', $string, $m)) { if (!isset($keysmap[$m[1]])) { echo "No key $m...
PHP使用键值对格式化字符串

PHP使用键值对格式化字符串

基本约束精确版本可以指定具体的版本,告诉Composer只能安装这个版本。但是如果其他的依赖需要用到其他的版本,则包的安装或者更新最后会失败并终止。{ "require": { "ezimuel/ringphp": "1.1.2", } }范围使用比较操作符可以指定包的范围。这些操作符包括:>,>=,<,<=,!=。 可以定义多个范围,使用空格或者逗号表示逻辑上的与,使用双竖线表示逻辑上的或。其中与的优先级会大于或。也可用连字符定义范围。需要注意的是,使用没有边界的范围有可能会导致安装不可预知的版本,并破坏向下的兼容性。建议使用折音号操作符。{ "require": { "ezimuel/ringphp": ">=1.1.2", "ezimuel/ringphp": ">=1.1.2 <2.0 || >2.3.0&...
Composer版本依赖

Composer版本依赖

会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。Cookie机制在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。 而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。 Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用C...
Cookie和Session详解

Cookie和Session详解