Submitted by gouki on 2012, May 18, 10:46 PM
关注一下这玩意是因为在命令行下写程序的时候,发现不能够自我守护。都只能用shell来再开一个进程监控。本来想做三角监控的,但想想,只是为了一个小程序,我得写三个程序来自我守护,真没劲啊。
所以,找到pcntl_fock函数的时候很激动,其实在很久以前看过,但是没关注过,毕竟很多时间跑命令行程序的时候,一下子就跑完了,真正跑了不退出的程序,真的很少用。
http://rainbird.blog.51cto.com/211214/277861/
- <?php
- $pid = pcntl_fork();
- if($pid == -1){
- //创建失败咱就退出呗,没啥好说的
- die('could not fork');
- }
- else{
- if($pid){
- //从这里开始写的代码是父进程的,因为写的是系统程序,记得退出的时候给个返回值
- exit(0);
- }
- else{
- //从这里开始写的代码都是在新的进程里执行的,同样正常退出的话,最好也给一个返回值
- exit(0);
- }
- }
- ?>
所以,以下内容就来自于上述代码中有涉及到的博客:
XML/HTML代码
- 这样一改好理解多了,如果你父进程希望知道子进程正常退出的话,可以加上前面的pcntl_wait.
- 函数的用法是整明白了,在实际的工作中有什么用处呢?
- 1.后台程序
- 命令行程序好写,服务程序也好写,笔者觉得这服务程序最难写.想想原来想在windows下写个服务啥的,又是要注册服务又是要这样那样的老费劲了.现在专职管理linux想让个命令行程序在后台运行,直接在命令后面加个&就搞定了.但是这样总觉得土.有了pcntl_fork突然发现世界是那么的美好.当主进程成功创建子进程并获得子进程的id以后,自己在临死前还不忘说一句:"我已成功运行,我的id是:xxxx(子进程的id)",完了还给系统返回个0(正常退出),哈哈,死都死的那么有尊严.
- 前面说的是程序常驻内存的情况,当然了这时候要注意内存的释放以及向日志文件打印信息,而不是往屏幕上(一打印信息程序就退出的哟).还有一种情况是:程序被其它脚本调用,其它脚本只关心程序是不是正常运行,如果程序要运行很长时间才能运行完的话,最好不让脚本等待.这样的话pcntl_fork又派上用场了:)
- 2.延时处理.
- 有的时候,我们程序退出的时候要清理自身产生的东西,比如说要删除自己(当然了linux下面是可以删除正在运行的文件的,只是举个例子),这个时候就可以另起动一个进程,然后自己结束了,把事情交给另一个进程来做.当我们写服务程序的时候,我们肯定是写日志文件记录程序的运行情况(要不谁知道程序是不是在那睡大觉的:0).程序正常退出的时候我们可以写一条日志说程序退出了,但是当程序收到linux下伟大的kill -9的时候,怎么记录自己的退出行为呢?额.....这个和php的进程信号有关好像和这个没多大关系.
- 另一种情况:一个完善的程序一般都支持start,stop,restart这样的参数.start好说,stop也好说,既然start和stop都好说了,这个restart就先stop然后再start就可以了啊.额...好像又和pcntl_fork没多大关系,当你收到重启的信号总不能还是kill然后再start吧,是不是太黄太暴力了?还是温柔一点,让当前进程退出,让另外的进程再把它拉起来吧.在windows下想实现这一点似乎很困难呢,比如程序更新的时候,一般都是单写更新程序,或者程序退出的时候另起动一个批处理启动自己:)
- 3.不死进程
- 其实就是传说中的双进程了.早些年的时候万象网管为了达到不被恶意结束的目的用的就是这招了.虽然咱不用担心程序被人恶意停止,但是也保不齐主程序因为任务太重抗不住自己先挂了(这种情况也不是不会发生).所以......
- 说了这么多,只是对写程序的一些思考,对一个函数用法的延伸.我想到了这么多,你呢?
不知道是否能够做到这个地步,但是先关注一下,只是现在加班频繁,都不知道有没有时间来折腾它。套用锅巴说的一句:忙的象狗的人往 往都是穷鬼
Tags: linux, php
苹果相关 | 评论:1
| 阅读:18300
Submitted by gouki on 2012, January 10, 1:11 PM
昨天是公司年会,我所在的拓展小组不给力啊,表演最后一名。
然后抽奖,抽到一个可迟到15分钟的阳光普照奖。纠结啊,瑞士游没抽到,钻石饰品没钻到,3000元购物没抽到,连带薪假这样的阳光普照也没有抽到。
心是哇凉哇凉的。
所幸,年分气氛还是很热烈的,比如看到公司的几位帅哥的美女妆、旗袍装之类的,公司的美腿们啊,可惜对于我这样一个近视眼来说,太吃亏了。

有的看了。哈哈。。。
当然,我这里没法公布这些照片,都是有版权的。
Misc | 评论:1
| 阅读:13582
Submitted by gouki on 2011, May 12, 9:44 AM
Scala & Ruby | 评论:2
| 阅读:16680
Submitted by gouki on 2011, May 9, 10:16 PM
用了好久的网易源,慢慢的它的速度也开始慢了。今天在cnbeta上居然看到了这个:中科大Linux镜像源正式面向全国用户开张。觉得很惊讶,但同时又并不惊讶。其实交大也一直是国内linux源的提供点,但一直因为是教育网所以速度非常慢。
先看新闻:经过大半个星期的迁移和新脚本的测试,现在mirrors.ustc.edu.cn已经基本稳定了。
新机器的域名:
IPv4/v6: mirrors.ustc.edu.cn (能解析出教育网/电信/v6地址)
v4only: mirrors4.ustc.edu.cn (能解析出教育网/电信地址)
v6only: mirrors6.ustc.edu.cn
有些地方(比如我测试的合肥长宽),DNS会解析出电信地址,但使用教育网地址访问更快,这时可以通过修改hosts指定强制使用教育网地址访问。
教育网ip:202.38.95.110
电信ip:202.141.160.110
v6地址:2001:da8:d800:95::110
支持的访问方式:
http/ftp/rsync
提供的服务:
原debian.ustc.edu.cn和oss.ustc.edu.cn提供的镜像服务基本上都迁移过来了,除fedora/ubuntu-partner外。fedora正在进行同步,ubuntu-partner也会在近几天同步过来。
原centos.ustc.edu.cn提供的centos/epel/linux-2.6.git也已经迁移过来了。
需要注意的修改:
debian.ustc.edu.cn和oss.ustc.edu.cn两个域名已经设置为mirrors.ustc.edu.cn的别名,大多数镜像 的相对地址没有改变,所以大家基本上不需要对原有设置进行修改(如sources.list),可以继续正常使用。但是以下镜像用户请注意:
1. gentoo用户,原portage地址:
rsync://oss.ustc.edu.cn/pub/gentoo-portage 已经调整为:
rsync://mirrors.ustc.edu.cn/gentoo-portage
2. cygwin用户,原cygwin源地址:
http://oss.ustc.edu.cn/cygwin/cygwin/ 已经调整为:
http://mirrors.ustc.edu.cn/cygwin/
3. 原ubuntu cdimage地址:
http://debian.ustc.edu.cn/ubuntu-cd 已经调整为:
http://mirrors.ustc.edu.cn/ubuntu-releases
4. 原fedora linux地址:
http://oss.ustc.edu.cn/fedora/ 已经调整为:
http://mirrors.ustc.edu.cn/fedora/linux/
5. centos.ustc用户,请修改自己的CentOS-Base.repo和epel.repo,将文件中的域名
centos.ustc.edu.cn 修改为 mirrors.ustc.edu.cn
6. linux-2.6.git用户,请修改origin地址:
git remote set-url origin http://mirrors.ustc.edu.cn/linux-2.6.git
使用帮助:
大多数镜像的使用帮助已经完成,大家在对应的目录下,如:
http://mirrors.ustc.edu.cn/ubuntu/
点击页面上方(标题下方)的使用说明链接,可以打开其对应的帮助信息,如如何设置sources.list文件。或者也可以直接打开
http://mirrors.ustc.edu.cn/mirror-help/.html
在首页上点击使用说明链接,点击其中对应的源的链接,也可以跳转查看相应的帮助。由于人手不够,有些源还没有使用帮助信息,也欢迎大家帮忙写了,发送给我们。
状态监控:
在首页点击页面上方的同步状态链接,可以查看当前各镜像的同步状态,包括成功与否/上游源/镜像体积等。
大家如果知道更好(更新、更快)的上游源,请联系我们。近期我们会申请成为debian和ubuntu等镜像的官方镜像,这样我们可以获得更好的上游源来同步。
如果同步出现故障,服务器的管理员会收到邮件通知,以尽快处理,所以大家看到状态监控页面中有显示同步失败的条目时,无需联系我们。
如果同步状态上显示同步正常,但实际使用过程中发现镜像有问题,请联系我们。
联系方式:
我们的邮箱: lug@ustc.edu.cn
鸣谢:
感谢中国科学技术大学、网络信息中心的支持,特别感谢jameszhang老师为我们提供服务器!
PS,我们下一步打算将pxe.ustc.edu.cn也对校外开放,对外提供一些网络启动服务,类似于boot.kernel.org这种。但是由于国内网络速度不行,所以对校外只能提供一些比较小的Live工具,大家可以给我们推荐一些实用的东西。
-----EOF----
事实上我也很感谢这个源,但我也不知道它能撑多久,要知道网络带宽可是很贵的。当然顺便我也测试了一下,居然我连教育网非常快,而连接电信的服务器特别慢。。哭了。
Tags: ustc, 中科大, linux源, 网易
苹果相关 | 评论:1
| 阅读:18459
Submitted by gouki on 2011, May 8, 11:45 PM
这两天看到又有基于JQuery的UI框架出来了。稍稍看了一下,发现这个还可以,主要是他的一些组件都是可以独立出来的。这样就方便很多而不至于非常复杂。
http://ligerui.com/api/
有兴趣的朋友们可以看看,界面什么的和easyUI差不太多,我主要是想用一下他的树插件(其实官方有很多树的插件,只是,这个看起来比较有意思。)
这里是DEMO:http://demo.ligerui.com/
是基于apache的协议的UI框架。可以尝试一下下。。
Tags: ligerui
Javascript | 评论:5
| 阅读:25475