[ PHP 内核与扩展开发系列] 流式访问:访问流与静态资源操作

在你打开一个流之后,就可以在它上面执行 I/O 操作了,使用哪种协议包装 API 创建了流并不重要,它们都使用相同的访问 API。 读 流的读写可以使用下面的 API 函数组合完成,它们多数都是遵循 POSIX I/O 中对应的 API 规范的: int php_stream_getc(php_stream *stream); 从数据流中接收一个字符,如果流上没有数据,则返回 EOF。 …

[ PHP 内核与扩展开发系列] 流式访问:流的概览

通常直接文件描述符相比调用流包装层消耗更少的 CPU 和内存; 不过, 这样会将实现某个特定协议的所有工作都堆积到作为扩展开发者的身上,通过挂钩到流包装层,你的扩展代码可以透明的使用各种内建的流包装,比如HTTP、FTP,以及它们对应的 SSL 版本,另外还有 gzip 和 bzip2 压缩包装。通过 include 特定的 PEAR 或 PECL 模块,你的代码还可以访问其他协议, 比…

[ PHP 内核与扩展开发系列] PHP 中的资源类型:复合数据类型 —— 资源

截止到现在,我们已经熟悉了 PHP 语言中的字符串、数字、布尔以及数组等数据类型了,接下来,我们将接触另外一种 PHP 独特的数据类型——资源(Resource)。 讲述之前,先描述下资源类型在内核中的结构: typedef struct _zend_rsrc_list_entry { void *ptr; int type; int refcount; } zend_rsrc_list…

[ Laravel 5.3 文档 ] 测试 —— 应用测试

1、简介 Laravel 为生成 HTTP 请求、测试输出、以及填充表单提供了流式API。举个例子,我们看下 tests 目录下包含的ExampleTest.php文件: <?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseTrans…

使用 Laravel 纯手工打造一个简单的电子商务网站(一) —— 后台新增商品及前台显示

1、概述 本系列教程我们将演示如何使用 Laravel 5.2 纯手工打造一个简单但功能完备的电商网站。这个电商网站只售卖以ZIP格式打包的电子文章,用户下单并付款后即可下载,有点类似一些售卖网站主题(打包的文件)的网站,比如ThemeForest。 我们将会用到Laravel的一些功能特性,比如存储(Storage)和支付(Cashier),我们使用Storage将打包后的文章存储起来…

[ Laravel 5.2 文档 ] 服务 —— 文件系统/云存储

1、简介 Laravel 基于 Frank de Jonge 开发的 PHP 包 Flysystem 提供了强大的文件系统抽象。Laravel 文件系统集成提供了使用驱动处理本地文件系统的简单使用,这些驱动包括Amazon S3,以及 Rackspace 云存储。此外在这些存储选项间切换非常简单,因为对每个系统而言,API 是一样的。 2、配置 文件系统配置文件位于config/file…

Laravel 缓存实例教程(一) —— 基于Memcached缓存驱动的配置

对于大型网站(数据多,访问量大)而言,缓存系统是必备组件,其为减轻数据库负载、提高页面访问速度、提升系统性能立下汗马功劳。Laravel作为一个功能完善且强大的PHP框架,自然为缓存系统提供了支持。目前Laravle支持的缓存驱动包括文件、数组、数据库、APC、Memcached和Redis,并且为这些驱动提供了统一的存取接口,这样做的好处显而易见:我们可以根据业务需求随时切换缓存驱动而…