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

linux下的多线程运行PHP

关注一下这玩意是因为在命令行下写程序的时候,发现不能够自我守护。都只能用shell来再开一个进程监控。本来想做三角监控的,但想想,只是为了一个小程序,我得写三个程序来自我守护,真没劲啊。
所以,找到pcntl_fock函数的时候很激动,其实在很久以前看过,但是没关注过,毕竟很多时间跑命令行程序的时候,一下子就跑完了,真正跑了不退出的程序,真的很少用。

http://rainbird.blog.51cto.com/211214/277861/
  1. <?php  
  2. $pid = pcntl_fork();  
  3. if($pid == -1){  
  4.          //创建失败咱就退出呗,没啥好说的  
  5.          die('could not fork');  
  6. }  
  7. else{  
  8.         if($pid){  
  9.                 //从这里开始写的代码是父进程的,因为写的是系统程序,记得退出的时候给个返回值  
  10.                 exit(0);  
  11.         }  
  12.         else{  
  13.                 //从这里开始写的代码都是在新的进程里执行的,同样正常退出的话,最好也给一个返回值  
  14.                 exit(0);  
  15.         }  
  16. }  
  17. ?>  

所以,以下内容就来自于上述代码中有涉及到的博客:

XML/HTML代码
  1. 这样一改好理解多了,如果你父进程希望知道子进程正常退出的话,可以加上前面的pcntl_wait.  
  2.       函数的用法是整明白了,在实际的工作中有什么用处呢?  
  3.       1.后台程序  
  4.       命令行程序好写,服务程序也好写,笔者觉得这服务程序最难写.想想原来想在windows下写个服务啥的,又是要注册服务又是要这样那样的老费劲了.现在专职管理linux想让个命令行程序在后台运行,直接在命令后面加个&就搞定了.但是这样总觉得土.有了pcntl_fork突然发现世界是那么的美好.当主进程成功创建子进程并获得子进程的id以后,自己在临死前还不忘说一句:"我已成功运行,我的id是:xxxx(子进程的id)",完了还给系统返回个0(正常退出),哈哈,死都死的那么有尊严.  
  5.       前面说的是程序常驻内存的情况,当然了这时候要注意内存的释放以及向日志文件打印信息,而不是往屏幕上(一打印信息程序就退出的哟).还有一种情况是:程序被其它脚本调用,其它脚本只关心程序是不是正常运行,如果程序要运行很长时间才能运行完的话,最好不让脚本等待.这样的话pcntl_fork又派上用场了:)  
  6.       2.延时处理.  
  7.       有的时候,我们程序退出的时候要清理自身产生的东西,比如说要删除自己(当然了linux下面是可以删除正在运行的文件的,只是举个例子),这个时候就可以另起动一个进程,然后自己结束了,把事情交给另一个进程来做.当我们写服务程序的时候,我们肯定是写日志文件记录程序的运行情况(要不谁知道程序是不是在那睡大觉的:0).程序正常退出的时候我们可以写一条日志说程序退出了,但是当程序收到linux下伟大的kill -9的时候,怎么记录自己的退出行为呢?额.....这个和php的进程信号有关好像和这个没多大关系.  
  8.       另一种情况:一个完善的程序一般都支持start,stop,restart这样的参数.start好说,stop也好说,既然start和stop都好说了,这个restart就先stop然后再start就可以了啊.额...好像又和pcntl_fork没多大关系,当你收到重启的信号总不能还是kill然后再start吧,是不是太黄太暴力了?还是温柔一点,让当前进程退出,让另外的进程再把它拉起来吧.在windows下想实现这一点似乎很困难呢,比如程序更新的时候,一般都是单写更新程序,或者程序退出的时候另起动一个批处理启动自己:)  
  9.       3.不死进程  
  10.       其实就是传说中的双进程了.早些年的时候万象网管为了达到不被恶意结束的目的用的就是这招了.虽然咱不用担心程序被人恶意停止,但是也保不齐主程序因为任务太重抗不住自己先挂了(这种情况也不是不会发生).所以......  
  11.       说了这么多,只是对写程序的一些思考,对一个函数用法的延伸.我想到了这么多,你呢?  

不知道是否能够做到这个地步,但是先关注一下,只是现在加班频繁,都不知道有没有时间来折腾它。套用锅巴说的一句:忙的象狗的人往 往都是穷鬼

Tags: linux, php

一篇介绍色情网站的文章引发的思考

有一个网站叫printerest,这个大家都知道,现在,又有了一个新的网站,网址是 http://www.snatchly.com/,不建议点击哦
风格是一样的,都是瀑布流的风格。只是这个网站的点击率超高,于是乎,投资界就写了一篇文章介绍了它一下:

http://news.pedaily.cn/201205/20120517326726.shtml
  1. Pinterest很流行,而有一个产业从来不会放过任何新的技术和模式,那就是色情产业。最近一家采用Pinterest风格的成人网站正式上线,以其鲜丽夺目的图片墙与无限滚动的瀑布流带给了用户最强的视觉冲击,获得了广泛的关注。  
  2.   
  3.   像Pinterest一样,这家网站允许用户将自己在互联网上发现的各种色情内容(包括图片和视频)添加到网站上,并根据不同的风格进行整理和分享。  

也正是这篇文章让我明白,原来,色情业居然是技术的前沿阵地,居然是VHS标准等的制定参考对象。投资界中这样描述:

XML/HTML代码
  1. 实际上,这并不是色情产业第一次引入成功的互联网模式。回顾历史,我们可以看到色情产业在诸多方面都推动着互联网的进步。  
  2.   
  3.   在20世纪80年代的VHS与Betamax录像带标准争夺战中,正是因为色情行业对VHS格式的支持,使得质量更高的Betamax格式反而落败。同样的事情也发生在RMVB与Flash流媒体标准、蓝光与HD-DVD光盘格式的大战中,色情行业的支持直接促成了标准的诞生。  
  4.   
  5.   在另一角度,在线支付成为大众接受的支付方式仅仅是几年之前,但是有一个行业,早在20世纪90年代就已经对其进行了成功的实践。是的,这也是色情业,1999年的在线成人内容消费额高达13亿美元,占当年在线消费总额的8%,大大高于在线购书和订购机票的消费额。  
  6.   
  7.   广泛的流媒体播放技术直到YouTube开始才被在线媒体广泛应用,但成人网站也早早就已经开始采用无需任何附加插件的早期流媒体播放技术。正如畅销书作家 Lewis Perdue 所说,“28.8K 猫时代的程序员们为了让付费用户看上性爱画面而对在线播放软件进行的极致优化,是今日CNN得以通过网络快速传播新闻视频的技术基础”。成人网站用户强烈的在线流媒体播放需求推动了流媒体播放技术的快速进步。  

当然,让我震精的还有:

XML/HTML代码
  1. 普通的网站架构是难以承受这样庞大的数据需求的,成人网站们的解决方案包括成立自己的数据中心,租用亚马逊AWS、微软Azure这样的大型云计算资源,采用更高效的网站架构和数据库技术等。他们采用这些方案其实并不是源于其对新技术的好奇,而是为了满足用户不断增长的需求。  

果然这些解决方案都是走在了世界前沿啊。要向他们学习。

Tags: 色情, amazon, pinterest

工作笔记

一个句子的迁移,一个粗心:
原mysql代码是:select date_format(from_unixtime(xxx),'%Y-%M') as xxxxx from table group by xxxxx

sql server转换后:
select (select dateadd(ss,xxx,'1970-01-01 08:00:00')) as xxxxx from table group by xxxxx
因为sql server不支持将as 后的内容做聚集,只能:
select dateadd(ss,xxx,'1970-01-01 08:00:00') as xxxxx from table group by (select dateadd(ss,xxx,'1970-01-01 08:00:00'))
但又报错,说是group by 不能使用子查询。

仔细想了想,(select dateadd(ss,xxx,'1970-01-01 08:00:00')) as xxxxx,这个select用来干嘛 ?如果是在查询分析器里,当然是要用select,因为要输出嘛,但是在sql语句中。。。
不需要啊。

记录一下。

Tags: sqlserver, mysql, convert

一段聊天记录。。隐藏了QQ号

因为觉得有意思,也说到了目前的一些创业公司的现状,所以想来放出来给大家看看
再者,隐藏了QQ号,黑黑

觉醒@北京(xxxxxx)  14:54:51
突然感觉创业团队有时候多么不靠谱的一件事情哇....
廖宇雷(xxxxxx)  15:01:01

觉醒@北京(xxxxxx)  15:01:37
2个开发配3个产品...
霖雨(xxxxxx)  15:01:53
苦逼的开发人员
板子(xxxxxx)  15:04:51
嗯,然后经常是刚毕业的产品
板子(xxxxxx)  15:05:13
每天不断“试错”+各种神乎其神的纬度的统计数据"分析"
觉醒@北京(xxxxxx)  15:05:20
绝对是2手产品..
觉醒@北京(xxxxxx)  15:05:47
就一句话..这个好…就抄它了...
觉醒@北京(xxxxxx)  15:06:02
剩下细节开发自己琢磨把
Darren(xxxxxx)  15:06:25

板子(xxxxxx)  15:06:38
我们1年半,基本把热门的产品都做了个遍了
霖雨(xxxxxx)  15:09:55
有%1成功就不错了
霖雨(xxxxxx)  15:10:24
怒鸟的team不是第一个app爆发
Gosber@MySQL+Cluster(xxxxxx)  15:10:39
我们这行 成功率极低
神仙(xxxxxx)  15:11:42
所谓大公司大平台也只是浮云啊
觉醒@北京(xxxxxx)  15:12:03
产品们的理论是...我们的开发不行...
Gosber@MySQL+Cluster(xxxxxx)  15:12:12
这山还望那山高
Gosber@MySQL+Cluster(xxxxxx)  15:12:17
原因都在自己身上
觉醒@北京(xxxxxx)  15:12:17
创业公司就是需要试水
Gosber@MySQL+Cluster(xxxxxx)  15:12:29
中国人就是人人都觉得自己是个明白人
神仙(xxxxxx)  15:12:36
外国人呢
Gosber@MySQL+Cluster(xxxxxx)  15:12:37
团队意识太单薄
觉醒@北京(xxxxxx)  15:13:05
我们目前做的应该就是一个大全- -
觉醒@北京(xxxxxx)  15:13:16
集百家所长一个四不像
觉醒@北京(xxxxxx)  15:13:37
堆起来的东西..
觉醒@北京(xxxxxx)  15:14:00
不知道什么时候能够静下来梳理一下
觉醒@北京(xxxxxx)  15:15:05
我觉得产品应该对每一版本都有一个期望..达到什么目标...
觉醒@北京(xxxxxx)  15:15:13
不是一次一次的试效果

收到linode的通知,顺便记录一下

这两封邮件来自linode,说实话,觉得linode真心不错。。

比如这一封:
We are currently aware of an issue with the host that your Linode resides on (tokyo49). This issue requires a reboot to resolve. We do apologize for any inconvenience this issue may cause. Your patience and understanding is greatly appreciated. Please do not hesitate to contact us if you have any questions or concerns.

然后过了将近10分钟左右 :
The host that your Linode resides on has been successfully rebooted. Your Linode will return to its last state shortly (running or powered off). There is no need to issue boot jobs for your Linode at this time. Thank you for your patience and understanding. Please feel free to update this ticket in the event that you have any additional questions or concerns about this matter.

于是,linode的管理邮件又自动发来:
Hello xxxxxxx! The following activity has recently occurred:

* linode??????- (7659786) Host initiated restart - Completed Wed, 16 May 2012 04:23:49 GMT
* linode?????- (7659950) Lassie initiated boot - Failed Wed, 16 May 2012 04:23:58 GMT

This is a new feature.  You can change your notification settings via https://manager.linode.com/profile.
果然,这些功能是真心不错啊。如果以后有短信息发送就好了。
国内的VPS有哪个有类似功能的?不过国内我是不想用了,NND,备案备案,备死人的案。

Tags: linode