CODE, ARCHITECTURE & AI

代码、架构与 AI 时代.

记录工程实践,也探索 AI 时代软件与人的新可能。

484 篇记录保持好奇,慢慢积累

PHP安全模式下的exec执行问题

PHP安全模式下的exec执行问题 今天同事遇到一个问题,在执行某个程序的时,将执行的命令写错了,发现程序依然可以执行,可是当把程序在终端运行时又显示此文件不存在。 于是最近一直沉迷于源码的我追踪了整个执行过程,得到如下答案。 以上的问题出现在安全模式开启的情况下。 按照PHP的源码结构,exec函数的实现应该在 /ext/standard 目录下,在此目录…
继续阅读 ↗

情人节快乐

和老公一起过了3个情人节了。一大早到得公司,公司微博上到处都是情人节的祝福和收到礼物的同事晒的幸福。老公怕我不高兴,给我解释了两次今年没有鲜花。看在老公平日送鲜花的频率上,就不为难你了吧。 幸福不一定需要鲜花,同事在微博里面发了几个帖子,让我觉得很幸福: 一个人说看到女朋友全身上下没有一个饰品,答应 09 年买个大家伙给女朋友。 但是到过节的时候囊中羞涩,灵…
继续阅读 ↗

HTTP协议的过期模型和由过期时间想到的

HTTP为提高性能,减少网络传输的信息量,从而使用了缓存。 HTTP协议缓存的目标是去除许多情况下对于发送请求的的需求和去除许多情况下发送完整请求的需求。 在http协议中使用截止模型和证实模型来实现缓存。 【截止模型】 目的:减少操作的大量网络来回奔波,或者说减少http的请求数。 避免请求的主要机制是服务器提供明确的在将来截止的时间,表示响应可满足后续请…
继续阅读 ↗

TIPI0203-PHP脚本的执行

在前面的章节介绍了PHP的生命周期,PHP的SAPI,这些内容都是处于上层的,在这个下面是对于PHP本身的解析和执行。这一小节我们介绍PHP脚本的执行。 目前的编程语言可以分为两大类: 第一类是像C/C++, .NET, Java之类的编译型语言, 它们的共性是: 运行之前必须对源代码进行编译,然后运行编译后的目标文件. 第二类比如:PHP, Javascr…
继续阅读 ↗

TIPI020203-FastCGI

FastCGI简介 什么是CGI CGI全称是“通用网关接口”(Common Gateway Interface), 它可以让一个客户端,从网页浏览器向执行在Web服务器上的程序,请求数据。 CGI描述了客户端和这个程序之间传输数据的一种标准。 CGI的一个目的是要独立于任何语言的,所以CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。…
继续阅读 ↗

TIPI020202-嵌入式PHP

从第一章中对PHP源码目录结构的介绍以及PHP生命周期章节中可以看出,嵌入式PHP类似CLI,是SAPI接口的另一种实现。 一般情况下,它的一个请求的生命周期也会和其它的SAPI一样:模块初始化=>请求初始化=>处理请求=>关闭请求=>关闭模块。当然,这只是理想情况。 但是嵌入式PHP的请求可能包括一段或多段代码,这就导致了嵌入式PHP的特殊性。 对于嵌入式…
继续阅读 ↗

TIPI020200-SAPI概述

前一小节介绍了PHP的生命周期, 所有的请求都是通过SAPI接口实现的. 在源码的SAPI目录存放了PHP对各种服务器抽象层的代码,例如命令行程序的实现, mod_php的apache模块实现以及fastcgi的实现等等. 在各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口。每个服务器都需要实现各自己的_sapi_module_struct结…
继续阅读 ↗