php多进程跑脚本

work.php主文件

#!/home/pay/odp/php/bin/php -c /home/pay/odp/php/etc/php.ini
<?php

/** 确保这个函数只能运行在SHELL中 */
if (substr(php_sapi_name(), 0, 3) !== ‘cli’) {
die(“This Programe can only be run in CLI mode”);
}
if (!function_exists(‘pcntl_fork’)) {
die(“pcntl_fork not existing”);
}

/** 关闭最大执行时间限制, 在CLI模式下, 这个语句其实不必要 */
set_time_limit(0);
/*
$pid = posix_getpid(); //取得主进程ID
$user = posix_getlogin(); //取得用户名
*/
$work_arr = array(
array(
‘file’ => ‘test.php’,
‘args’ => “arg1″,
),
array(
‘file’ => ‘test.php’,
‘args’ => “arg2″,
),
);
$process_arr = array();
foreach($work_arr AS $work){
$file = $work['file'];
$args = $work['args'];
if(!file_exists($file)){
continue;
}
$pid = pcntl_fork();
if($pis === -1){
echo “create process failed,file:{$file}\n”;
}elseif($pid == 0){//child process
$pid = posix_getpid();
$cmd = ‘/home/pay/odp/php/bin/php -c /home/pay/odp/php/etc/php.ini -q ‘.$file;
echo “* Process {$pid} was created, and Executed:\n\n”,$cmd.”\n\n”;
pcntl_exec(‘/home/pay/odp/php/bin/php’,array(‘-c /home/pay/odp/php/etc/php.ini’,$file),array(‘VAR_TEST’=>$args));
}else{//parent process
$process_arr[$file] = $pid;
}
}

//检查进程是否结束
$all_process_has_return = false;
$wait_options = WNOHANG;
while (!$all_process_has_return){
$all_process_has_return = true;//假设已经全部退出
foreach ($process_arr as $file => $pid){
$wait_ret = pcntl_waitpid($pid, $status, $wait_options);
if($wait_ret === 0){//只要还存在未退出的进程,已全部都退出就为false
$all_process_has_return = false;
}
}

}

?>

test.php为具体脚本

<?php
file_put_contents($_SERVER['VAR_TEST'].’_out.txt’,time());

?>

demo.php

参考资料:

http://ju.outofmemory.cn/entry/208177

发表在 php | 留下评论

svn还原版本

方法1: 用svn merge
 1) 先 svn up,保证更新到最新的版本,如20;
 2) 然后用 svn log ,查看历史修改,找出要恢复的版本,如10 。如果想要更详细的了解情况,可以使用svn diff -r 10:20 [文件或目录];
 3) 回滚到版本号10:svn merge -r 20:10 [文件或目录],注意版本号之间的顺序,这个叫反向合并;
 4) 查看当前工作版本中的文件,如test.cpp和版本号10中文件的差别:svn diff -r 10 test.cpp, 有差别则手动改之;
 5) 若无差别,则提交:svn ci -m“back to r 10,xxxxx” [文件或目录]。这时svn库中会生成新的版本,如21。
方法2: 用svn up
 前2步如方法1,然后直接 svn up -r 10。当前的工作版本就是版本10了。但是注意,这时svn库中会并不会生成新的版本,下次在本地svn up之后,还是会回到之前的版本。
发表在 svn | 留下评论

websocket simple chat

www.sanwebe.com/2013/05/chat-using-websocket-php-socket/comment-page-1

发表在 socket | 留下评论

libevent+php扩展安装

先安装libvent

1154 tar zxvf libevent-2.0.22-stable.tar.gz
1155 cd libevent-2.0.22-stable/
1157 ./configure –prefix=/home/pay/myname/libevent/
1159 make && make install

再安装php扩展
1169 tar -zxvf libevent-0.1.0.tgz
1170 cd libevent-0.1.0
1179 ~/odp/php/bin/phpize
1180 ./configure –with-php-config=/home/pay/odp/php/bin/php-config –with-libevent=/home/pay/myname/libevent
1181 make && make install

最后在php.ini添加extension=libevent.so

1189 php -m

发表在 socket | 留下评论

windows创建txt快捷键

windows貌似没有创建txt的热键、只能是组合
1、如果只是想创建一个txt,可以win+r 输入notepad 对应C:\Windows\system32\notepad.exe(默认在环境变量中)
2、如果想在当前目录创建一个txt
win+r输入regedit打开注册表,搜索 C:\Windows\system32\notepad.exe,-469
修改名称为“T文本文档”,然后创建的时候可以“右键+w+t”就可以新建一个txt了,其实说白了就是变了下名称,可以直接索引到
发表在 windows | 留下评论

php开启log

今天用wamp发现用了这么久的环境竟然php log日志默认没有打开。。。心塞~

赶紧脑补下

; Log errors to specified file. PHP’s default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on NT, not valid in Windows 95).
;error_log = syslog
;error_log = “d:/wamp/logs/php_error.log”

发表在 php | 留下评论

php大小写

function strType($str){
$str =ord($str);
if($str>64&&$str<91){
//echo ‘大写字母’;
return 1;
}
if($str>96&&$str<123){
//echo ‘小写字母’;
return 2;
}
if(is_numeric($str)){
//echo ‘数字’;
return 3;
}
return 0;
}

其实就是通过ord来获取对应的ascii码值来区分大小写,详情查看http://www.asciitable.com/

ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
0 NUT 32 (space) 64 @ 96
1 SOH 33 ! 65 A 97 a
2 STX 34 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 / 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 `
31 US 63 ? 95 _ 127 DEL
发表在 php | 留下评论

socket(套接字) 学习

http://blog.csdn.net/shagoo/article/details/6396089

发表在 socket | 留下评论

memchahed常用操作

启动/结束
/home/users/v_haowenzhi/local/memcached/bin/memcached -p 12678 -U 0 -d -r -u root -m 2040 -c 1024 -t 4 -P /home/users/v_haowenzhi/tmp/memcached.pid
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB
-u 是运行Memcache的用户,这里是root
-l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122
-p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口
-c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定
-P 是设置保存Memcache的pid文件
kill `cat /tmp/memcached.pid`
连接到 memcached:
telnet ip 端口,如telnet localhost 12677
stats查看状态,flush_all:清楚缓存
stats items 查看组
stats cachedump 15 0

发表在 memcache | 留下评论

comet

别名:http长连接、反向ajax

http://www.zeitoun.net/articles/comet_and_php/start

发表在 http | 留下评论