分类2015年下的文章

Jerry Bendy 发布于 04月05, 2015

后台任务和PHP-Resque的使用(四) 使用Worker

注意,这篇教程仅适用于Linux和OSX的系统,Windows并不适用。理解Worker的本质技术上讲一个Worker就是一个不断运行的PHP进程,并且不断监视新的任务并运行。一个简单的Worker的代码如下:while(true){$jobs=pullData();//从队列中拉取任务foreach($jobsas$class=>$args){//循环每个找到的任务$job=new$class();$job->perform($args);//执行任务}sleep(300);//等待5分钟后再次尝试拉取任务}以上这些代码的具体实现都可以交给php-resque。创建一个Worker,php-resq...

阅读全文 »

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 发布于 03月19, 2015

Linux服务器安装使用PhantomJS

PhantomJS(http://phantomjs.org/)是一个服务器端的JavaScriptAPI的WebKit。其支持各种Web标准:DOM处理,CSS选择器,JSON,Canvas,和SVG等,可方便的应用于各种自动化的测试、屏幕捕获、网络监控等环境。Windows版的PhantomJS安装比较简单,下面就说一个Linux版本的PhantomJS的安装及简单用法。Linux版本安装有两种方法,一是下载对应系统的编译好的可执行文件使用,但可能会出现不能用的情况,这时就需要使用第二种,源码编译安装。一、直接下载编译好的文件直接到Bitbucket下载对应的压缩包(链接:https://bitbucket....

阅读全文 »

Jerry Bendy 发布于 01月23, 2015

在前端使用和编译LESS

做前端的应该都会知道LESS,使用LESS书写CSS样式可以在很大程序上降低工作量以及由拼写造成的错误,但对新手来说除了LESS的语法外,如何在自己的工作环境上用上LESS可能也是个问题。个人认为,使用LESS最简单的方法就是实时编译:即对LESS文件做的修改可以在不额外加任何操作(编译)的情况下应用在测试环境甚至生产环境,毕竟对LESS文件每做一点小修改都要重新编译一次也太麻烦了些,而且很慢。实时编译有两种方法:一是在HTML中引入less.js文件,并且设置工作环境是“development”,这样在网页每次载入时都会重新编译LESS文件;二是使用某些编辑器,如SublimeText,SublimeText有...

阅读全文 »

Jerry Bendy 发布于 01月02, 2015

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

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

阅读全文 »