手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

xcache...

 好吧,我感觉又被xcache骗了。当然也可能是他们没注意吧。

在网站上,他们说:
修复版本. XCache admin 页面有大量改进, 增加 namespace 支持, 等等. 更新 API, 新增了一些 INI 设置. 新增 "诊断" 模块给出一些专家级建议 (htdocs 中). 进程异常时自动禁用缓存 (运行期间). 警告: 本版本开始使用 extension= 来加载 XCache. 不再支持采用 zend_extension= 方式加载.
 
其实我也不太敢说他们不好,上次我说:xcache 发布3.0版本, moo过来说了两句关于大版本更新的事。
再接着说上面的那句警告:本版本开始使用Extension那句
OK,当我装完的时候:
XML/HTML代码
  1. root@MyDebian64Bit:~/xcache-3.0.0# make install  
  2. Installing shared extensions:     /usr/lib/php5/20090626/  
你看,成功了,但是看了一下xcache.ini。。。
XML/HTML代码
  1. [xcache-common]  
  2. ;; install as zend extension (recommended), normally "$extension_dir/xcache.so"  
  3. zend_extension = /usr/lib/php5/20090626/xcache.so  
一下子就与说明不太一致了

小菜谱

 想不到,我的http://xiaocaipu.com还没有上线,我的微信功能却已经正常在运作了。

打开微信搜索好友,如果按帐号添加,就搜索:xiaocaipu,如果搜索公众帐号,就搜:小菜谱。当然,你懒的话,就扫描这个:
大小: 31.05 K
尺寸: 376 x 376
浏览: 1588 次
点击打开新窗口浏览全图
小LOGO是http://82982.com的小茗帮忙做的。。那一群设计师的朋友啊什么的,都说自己没空,我纠结啊。
 
不知道这个帐号是做什么的?那我得上好多图了。。。
先上两个简单的图吧
大小: 436.27 K
尺寸: 251 x 376
浏览: 1647 次
点击打开新窗口浏览全图
大小: 431.13 K
尺寸: 251 x 376
浏览: 1611 次
点击打开新窗口浏览全图
 
这些只是基础功能,还有相对比较高级一点的功能:
大小: 410.32 K
尺寸: 251 x 376
浏览: 1619 次
点击打开新窗口浏览全图
大小: 432.41 K
尺寸: 251 x 376
浏览: 1596 次
点击打开新窗口浏览全图
大小: 440.51 K
尺寸: 251 x 376
浏览: 1570 次
点击打开新窗口浏览全图
大小: 467.44 K
尺寸: 251 x 376
浏览: 1614 次
点击打开新窗口浏览全图

Tags: 小菜谱

转:PHP中利用pcntl实现多进程(模拟多线程)实例

 pcntl在很久很久之前就听过了,但是一直没有尝试着真正要用它。这不,遇到socket问题了,看socket,遇到pcntl了,再看看吧。

这里是某个人的测试代码:
PHP代码
  1. <?php  
  2. /** 
  3.  * 创建子进程入口 
  4.  * @author selfimpr 
  5.  * @blog http://blog.csdn.net/lgg201 
  6.  * @mail lgg860911@yahoo.com.cn 
  7.  * @param $func_name 代表子进程处理过程的函数名 
  8.  * @param other 接受不定参数, 提供给子进程的过程函数. 
  9.  */  
  10. function new_child($func_name)  
  11. {  
  12.     $args = func_get_args();  
  13.     unset($args[0]);  
  14.     $pid = pcntl_fork();  
  15.     if ($pid == 0) {  
  16.         function_exists($func_nameand exit(call_user_func_array($func_name$args)) or exit(-1);  
  17.     }  
  18.     else if ($pid == -1) {  
  19.         echo "Couldn’t create child process .";  
  20.     }  
  21. }  
  22. //测试处理函数, 输出$prefix连接的数组    
  23. function test($prefix$num)  
  24. {  
  25.     while ($i++ < $num) {  
  26.         echo $prefix . $i ."\n";  
  27.     }  
  28. }  
  29. //创建一个子进程    
  30. new_child("test""child process ", 100);  
  31. //父进程也开启一个与子进程同样多的循环.    
  32. test("parent process", 100);  
  33. //运行结果, 我这里运行父进程输出50个左右, 子进程开始运行.    
  34. ?>    
因为上面有作者有注释,所以我就不再多贴这篇文章的地址了。原网页的代码是错误的。我改了一下。原作者说的是:父进程输出50个左右时,子进程就开始运行了。我这边不是。我把数据改成1000后,发现父进程在950多的时候,子进程开始运行了。
原作者的博客上还有一个详细介绍:PHP扩展pcntl(进程控制以及信号处理)中文文档 
 
当然,看手册也可以,对了,风雪之隅也写过类似的文章,http://www.laruence.com/2009/06/11/930.html,他提到的优点就是:
XML/HTML代码
  1. 优点:  
  2.     1. 使用多进程, 子进程结束以后, 内核会负责回收资源  
  3.     2. 使用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程还有机会重建流程.  
  4.     3. 一个常驻主进程, 只负责任务分发, 逻辑更清楚.  
然后他的代码就与上面有点区别,不过说白了还是大同小异:
PHP代码
  1. #!/bin/env php  
  2. <?php  
  3. /** A example denoted muti-process application in php 
  4. * @filename fork.php 
  5. * @touch date Wed 10 Jun 2009 10:25:51 PM CST 
  6. * @author Laruence<laruence@baidu.com> 
  7. * @license http://www.zend.com/license/3_0.txt PHP License 3.0 
  8. * @version 1.0.0 
  9. */  
  10.    
  11. /** 确保这个函数只能运行在SHELL中 */  
  12. if (substr(php_sapi_name(), 0, 3) !== 'cli') {  
  13.     die("This Programe can only be run in CLI mode");  
  14. }  
  15.    
  16. /** 关闭最大执行时间限制, 在CLI模式下, 这个语句其实不必要 */  
  17. set_time_limit(0);  
  18.    
  19. $pid = posix_getpid(); //取得主进程ID  
  20. $user = posix_getlogin(); //取得用户名  
  21.    
  22. echo <<<EOD  
  23. USAGE: [command | expression]  
  24. input php code to execute by fork a new process  
  25. input quit to exit  
  26.    
  27.         Shell Executor version 1.0.0 by laruence  
  28. EOD;  
  29.    
  30. while (true) {  
  31.    
  32.         $prompt = "\n{$user}$ ";  
  33.         $input = readline($prompt);  
  34.    
  35.         readline_add_history($input);  
  36.         if ($input == 'quit') {  
  37.                break;  
  38.           }  
  39.         process_execute($input . ';');  
  40. }  
  41.    
  42. exit(0);  
  43.    
  44. function process_execute($input) {  
  45.         $pid = pcntl_fork(); //创建子进程  
  46.         if ($pid == 0) {//子进程  
  47.                 $pid = posix_getpid();  
  48.                 echo "* Process {$pid} was created, and Executed:\n\n";  
  49.                 eval($input); //解析命令  
  50.                 exit;  
  51.         } else {//主进程  
  52.                 $pid = pcntl_wait($status, WUNTRACED); //取得子进程结束状态  
  53.                 if (pcntl_wifexited($status)) {  
  54.                         echo "\n\n* Sub process: {$pid} exited with {$status}";  
  55.                 }  
  56.         }  
  57. }  
做个笔记。
 
 
 
 

Tags: 多进程, pcntl

socket and soap

 其实本来不想定这个标题的。只是做了几个小小的测试

我用php实现了socket server,然后在命令行下做了点测试。在命令行下访问soap,并将返回值 给了客户端。

测试了一下。网速比较卡的情况下,基本在0.8秒左右 

然后我直接访问soap,打印出来的时候都差不多比命令行返回结果多了0.2秒。

这只是测试了soap请求一次。后来,我请求了两次。发现速度又快了0.1秒。

总计快了0.3秒。在命令行下用socket server返回数据好象快了一点。

-----------

文章只是我的一次记录,没有什么特别的意义。虽然不太科学,但对我来说,有三四台服务器的情况下,利用这个来交换数据还是有点用的。目前我的socket server只能用PHP实现,因为 部分代码都是靠PHP来获取数据的。本来想用go或者python来实现的,但目前没有时间。先用PHP了

 

 

scope

 scope这个单词给人的遐想实在太多了。第一次熟悉它的时候是因为他在yii的AR中有个小小的位置,比如 默认的查询值 ,默认的更新值 等等,方便自己写代码,方便给其他人一些默认属性的设定。

前两天在和流年聊天时,他说,你应该是好久没有看过thinkphp了,thinkphp中也有类似功能了。然后给我一个网址:http://www.thinkphp.cn/info/176.html,这种命名范围是新加入的功能。看了一下,果然功能很类似,也挺不错。

都是实现了差不多类似的功能。其实在很久以前,我记得thinkphp就有default_update字段和default_insert字段的。还可以设默认值。现在查询也可以了。

thinkphp也算是天天在进度,用它写程序的人也越来越多了,最近相对较火的瀑布流程序:pinphp,就是基于thinkphp进行开发的,开发速度快,在国内拥有N多用户,但索取的人多,贡献的人少,这恐怕也是TP最近的现状了。

支持一下国内的框架。顺便,QuickPHP这个框架大家也可以先记一下。(http://quickphp.net/),是一哥们写的。断断续续写了N多年了。基本成型。

国内现在框架有N多了,好象是个写PHP的都有想框架的冲动,我老了,蛋定了,不写了。。。。

Tags: yii, thinkphp