PHP 异步执行方法,模拟多线程

PHP 本身没有多线程的东西,但可以曲线的办法来造就出同样的效果,比如多进程的方式来达到异步调用,只限于命令模式。还有一种更简单的方式,可用于 Web 程序中,那就是用 fsockopen()、fputs() 来请求一个 URL 而无需等待返回,如果你在那个被请求的页面中做些事情就相当于异步了。

关键代码如下:

上面的代码向页面 another_page.php 发送完请求就不管了,用不着等待请求页面的响应数据,利用这一点就可以在被请求的页面 another_page.php 中异步的做些事情了。 阅读全文 >>

关于 WordPress Shortcode 以及在 the_content 之外使用

WordPress 中可以用 Shortcode 来创建宏代码,并且是高度可定制的,例如,有 PHP 代码:

那么只要在你的 post 中输入,[bartag foo="foo-value"],显示该文章的时候此处就被 bartag_func() 函数替换为:foo = foo-value。来个更实用的,比如欲定义一个[unmi_blog] 的标签,定义代码写成如下:

那么在文章中的 [unmi_blog] 的会显示为:隔叶黄莺 Unmi Blog

还能用 Shortcode 打照更强大的自定义标签,如 [YouTube id='1234'] 就显示 id=1234 的视频等等,只是 Shortcode 似乎又太局限了。在文中 http://codex.wordpress.org/Shortcode_API 详细介绍了 Shortcode 的用法,并且说在 the_content 显示的时候,Shortcode API 就会去解析已注册的 Shortcode,这就让 Shortcode 不能轻易的用在别处,不是在 post 里写 [unmi_blog] 将会原样显示出 [unmi_blog] 来,其实也就是在 WordPress 系统里有:

add_filter('the_content', 'do_shortcode'); 

但是人是活的,那些代码原本就是人编写的,我们可以假以巧妙的 Hack 让 Shortcode 应用在别处。

1. Customer Field 中应用 Shortcode Parse Shortcodes in your Custom Fields
2. Sidebar 里的 Text Widget 中 Adding a Shortcode to a Sidebar Widget
3. 任意地方 $text = yourShortCodeFunction("[your shortcode tag here]");echo $text; 外大括号,里小括号

 /*<?php wp_show_surveys(1);?>*/
 function wp_show_survey($survey_id=''){
  $short_code = '[SURVEYS '.$survey_id . ']';
  $output = apply_filters('show_survey', $short_code);
  echo $output;
 }

add_filter('show_survey','do_shortcode');

function custom_show_survey($content=''){
 //echo "<script>alert(123)</script>";
 return $content;
}

//add_filter('show_survey','custom_show_survey');

参考: 1. Shortcode API

写第一个 WordPress 插件程序

本文旨在让像我这样的 WordPress 初入门的开发者快速体验怎么写出一个最简单能工作的插件。至于插件的工作原理就不太多说,但基本的还是要懂得,插件中会用 add_action() 或 add_filter() 方法去挂住一些事件,如显示标题、显示内容等事件,然后执行一个函数。

add_action() 意味着某件事情发生了,要做什么事情,add_filter() 意味着事情发生,并传来的数据可对数据进行处理。用 add_action() 还是 add_filter() 就看你实际需求了。

虽然刚开始就声明了不太想多讲插件的原理,但前面几句话却表明的差不多了。立即例子入手吧,比如我们来做一个在每篇文章内容后附加一句版权声明的话。 阅读全文 >>

PHP之中使用共享内存进行高速数据更新的一种方案[转]

作者:HonestQiao

    如果在你实际的应用之中,你确实需要高速数据更新的操作,那么我们认为你已经具备以下先决条件:
    能够按照实际应用的需要而调整服务器
    关于这句话,大家自己可以明白意思的,不明白的自己想一想,如果没有达到这个要求,你是否有必要高速数据更新的操作, 或者先看看最后的附加说明.

 

    先见的参考文档:
1. http://w.yi.org/ftp/FAPM/PHP/php_manual_zh/ref.shmop.html
说明: PHP功能, 共享内存功能函数, 此处用于PHP直接操作内存, 提供高速数据操作
开启: 编译PHP的时候,加上参数: -enable-shmop
附注: 这个准备工作, 非常简单 阅读全文 >>

PHP 进程间内存共享

启用php的共享内存:

1).windows下,php.ini中取消 ;extension=php_shmop.dll 这行的行首分号,加载shmop扩展。
2) .linux/unix下,重新编译php,加入--enable--shmop 选项。

Shared Memory 的函数解释如下:

PHP 的 MVC 框架参考实现

MVC 模式在 Java 中表现的尤为出众,不光 Swing 是按照 MVC 来设计的,而且 Java 的 Web 框架也是 MVC1、MVC2 的。MVC 模式对于开发维护确有许多好处,所以 PHP 的框架,如 Zend、Symfony,PHP 的产品 WordPress 和 Joomla 都应用了 MVC 模式。PHP 不像 Servlet 那样有成熟的规范,如 web.xml、servlet、filter 等,但变换着一些把式同样能实现出优雅的 MVC 模式。这里简单介绍一下 PHP 是如何实现 MVC 模式,参照了了 Zend 的实现,我觉得还有许多改进的地方。说明的时候会拿它的各部分与 Struts1 的 MVC 相比较。

在 HTTP 环境中的 MVC 模式一句话描述就是:控制器根据 URI,把请求转给相应的 Action,由 Action 调用模型方法处理或得到数据,再选择相应的视图呈现界面。用过 Struts1 的请保留一些 Struts1 的实现原理,现在来看 PHP 的实现方式。

阅读全文 >>