标签PHP下的文章

Jerry Bendy 发布于 03月31, 2015

后台任务和PHP-Resque的使用(三) 安装

在第二部分我们使用php-resque作为队列系统,这一节讲如何安装php-resque。PHP-Resque是依赖Redis的,所以需要先安装Redis及PHP的Redis扩展。以下是所有需要安装的组件:RedisPHP的Redis扩展(php-redis)php-resquePHP的PCNTL扩展RedisRedis是一个开源的KV数据库,数据是保存在电脑RAM中的,速度非常快,所以通常可以使用Redis来做缓存,或保存Session等。可以在Redis的官方网站下载最新稳定版本。Redis的安装方法本文不再赘述,安装完成后不要忘记启动。PHP-Resquephp-resque是resque的PHP版本,很多...

阅读全文 »

Jerry Bendy 发布于 03月30, 2015

后台任务和PHP-Resque的使用(二) 队列系统

接着第一部分,Queue需要保存Jobs,Worker需要按照指定的时间间隔在Queue中轮循并执行Jobs。这个系统包含以下三个部分:推送者:推送任务到Queue,可以是任何过程,甚至是Worker;Queue:按顺序保存Jobs;Worker:从Queue中拉取Jobs并执行。注意,这里使用了推送(Push)和拉取(Pull)来代替添加(Add)和获取(Get)。Push:把数据添加到栈的尾部的操作。**_Pull(orPop):_**拉取(或弹出)。弹出并删除栈顶部的数据。Push操作通常会把数据添加到栈的尾部。这种数据类型会保证先添加到队列的项目总是先被读取和删除,即“先进先出”(FIFO,First-i...

阅读全文 »

Jerry Bendy 发布于 03月27, 2015

后台任务和PHP-Resque的使用(一) 介绍

什么是后台任务?后台任务就是运行在程序流程以外的任务,毕竟PHP作为网站后台语言是需要在执行后立即返回数据的,而且一般服务器都有设置执行的超时时间,所以使用PHP去完成一些比较耗时的后台操作就有些问题了。通常在做一些比较耗时的操作时都会想到使用一个后台任务以及任务队列,在流程外执行这些操作,并立即返回给前台一个正在执行的提示。我们来看一个实例:一个社交网站,某用户修改了他的的个人资料中的所在地。一般的流程是这样的:PHP并不是多线程的,所以所有任务必须在前一个任务完成后再能开始,这就会致使用户等待较长的时间。上面例子中,大约3.7秒后用户才能获取到来自服务器的反馈,用户体验较差。需要注意的是在整个流程中最重要的仅...

阅读全文 »

Jerry Bendy 发布于 01月02, 2015

在自己的PHP程序中实现插件机制:提取Wordpress插件机制代码

本人写代码有个毛病:不喜欢把代码写死,总要留出些扩展的余地(其实也不算什么缺点吧,好处是有的,但老是这样对于一些小项目来说太浪费时间了)。对于写一个可扩展的项目而言,插件机制似乎是必须的。例如我们需要在从数据库中获取到文章内容后执行一些操作,如转换代码高亮的符号为对应的pre标签、转换Emoji表情符号为图片地址或类、给文章内所有的图片加上LightBox效果的代码等等,如果把这些操作统统都写到Post类中,这个类将会在以后的代码升级过程中变得越来越大,并且越来越难维护。了解过Wordpress的插件机制的可能都知道,WP会这么做(演示代码,并非抄自WP)://插件内//添加过滤器函数add_filter('th...

阅读全文 »

Jerry Bendy 发布于 10月25, 2014

PHP转换网址相对路径到绝对路径的一种方法

代码若有改动不再更新文章,请以Gist上最新的代码为准。链接相信很多程序(尤其是采集类的程序)都会有需要把网址的相对路径转换成绝对路径的需要,例如采集到某页面的HTML代码中包含资源文件经常会看到这样的文件名:<linkrel="stylesheet"href="css/style.css"/><imgsrc="/logo.png"/><imgsrc="../banner.jpg"/>如果直接用获取其href属性或src属性很明显这个地址是打不开的,这就需要将其中的相对路径转为绝对路径。查一下网上相关的代码也不少,但大多数代码都太难被读懂,而且执行效率不见得会高,基于此我开始着...

阅读全文 »

Jerry Bendy 发布于 09月25, 2014

CodeIgniter在IIS、Apache、SAE和NginX上的伪静态设置方法

CodeIginter是一个很不错的轻量级PHP框架,文档也比较全面。关于CI去除“index.php”的伪静态设置在官方的文档中却只提及了一点,而且给出的方法对于静态文件还会出现错误。以下的内容并非是原创,而是整理了CI在不同服务器下的伪静态设置方法放在一起,供有需要的朋友复制、使用。Apache服务器Apache服务在打开URLRewrite模块后使用.htaceess文件处理伪静态规则。使用方法很简单,在网站根目录创建一个文本文件并命名为.htaccess,复制下面的内容进去保存就好了。(Windows的电脑上不允许这种以点号开头的文件,不过可以使用命令提示符重命名,或者先随便用什么名字,上传到服务器后再改...

阅读全文 »

Jerry Bendy 发布于 09月18, 2014

CodeIgniter表单验证类报错:Unable to access an error message corresponding to your field name.

在使用CodeIgniter(CI)框架中的表单验证类做用户登录时,发现了一个出错信息:查看源代码发现并没有与其相关的说明,而且语言文件中也没有对这句话的翻译,最终在N次测试后发现问题出现在了对密码验证的回调函数上://.......$this->form_validation->set_rules('password','密码','trim|required|min_length[5]|max_length[30]|callback_pword_check');//......../***用户名及密码有效性验证回调函数*/functionpword_check($pword){$uname=$thi...

阅读全文 »

Jerry Bendy 发布于 03月31, 2014

PHP中对hmac_sha1签名算法的实现方法

最近研究一个七牛的下载API,其中用到了一种叫hmac_sha1的签名算法,用官方给出代码无法实现(因为空间配置没有提供这个函数),所以就去了解了下这种算法。具体关于hmac_sha1的信息可以参见维基百科。我只说下具体的PHP代码实现:/***获取hmac_sha1签名的值*@link代码来自:http://www.educity.cn/develop/406138.html**@param$str源串*@param$key密钥**@return签名值*/functionhmac_sha1($str,$key){$signature="";if(function_exists('hash_hmac')){$si...

阅读全文 »

Jerry Bendy 发布于 02月21, 2014

冰翼短网址程序改版上线,开放API

2016-05-22更新:phurl的算法由于会产生被遍历的安全问题目前已停止使用,新的方案和接口正在开发中。我曾在2013年5月18日发分享过一个网站软件叫PhUrl(参见《免费短网址程序:phurl》),PhUrl的源码是逐过程的,功能简单、难以扩展并且难以移植。刚好我最近在学习PHP面向对象,本着代码重用并且易于扩展的原则,对PhUrl的全部源代码进行了改造(准确的说两者之间已经没什么相似性了,除了前台界面暂时还未修改)。这次修改主要是向着面向对象和面向切面两个方向,在过程式执行的同时引入Hook机制,在数据校验、Query执行、数据插入等过程创建Hook并提供扩展支持。修改后的程序使用我常用的CI(Cod...

阅读全文 »

Jerry Bendy 发布于 01月21, 2014

一张图讲述PHP面向对象基础

这张图片还是我在群里偶然发现的,概括得挺全面,涉及到PHP面向对象的基本用法、面象对象的基本概念、辅助函数、反射等等,源文件名是PHP5OOP思维导图.jpg不过这张图只适合初学PHP面向对象的人继续对其加深印象,已经会使用面向对象的应该继续深入学习PHP高级面向对象及设计模式,这些也就不适用了。先贴个小图,后面再附上大图的地址: 完整大图地址...

阅读全文 »