值得参考一下该程序设计的思路:
[文章作者:张宴 本文版本:v1.0 最后修改:2007.11.16 转载请注明出处:http://blog.s135.com]
最近遇到一个问题,Linux下的PHP命令行程序作为守护进程,需要从队列文件中读一行数据,通过TCP协议发送给外地的接收服务器,再读下一行数据,再发送。当本地与外地的网络状况不好时,有时候发送一条数据所耗费的时间就较长,累积起来容易造成队列堵塞和延迟。
于是,我准备用该PHP命令行程序生成多个子进程,将串行处理变成并行处理。最简单的方法就是在PHP中用exec()或popen()函数将一个shell命令行推到后台去执行,例如:
<?php
exec("/bin/sh /opt/zhangyan.sh &");
?>
最后的&表示将shell脚本推到后台去执行。
但是这样会有一个问题,如果推到后台的进程太多,可能会导致服务器系统资源耗尽而崩溃,所以必须控制进程数量。
我写了一个PHP程序(/opt/zhangyan.php)、一个shell程序(/opt/zhangyan.sh)作为测试用例。
程序的逻辑:
1、设置/opt/zhangyan.php最多允许生成500个子进程;
2、当/opt/zhangyan.php读取到一条数据后,将允许生成的子进程数减1(空闲进程数$p_number=5 ......
用PHP实现手机归属地查询api接口:
主要使用curl实现,需要开启php对curl的支持.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php
header("Content-Type:text/html;charset=utf-8");
if (isset($_GET['number'])) {
$url = 'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo';
$number = $_GET['number'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "mobileCode={$number}&userId=");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
$data = simplexml_load_string($data);
if (strpos($data, 'http://')) {
echo '手机号码格式错误!';
} els ......
this,self,parent三个关键字之间的区别。从字面上比较好理解,分别是指这、自己、父亲。我们先建立几个概念,这三个关键字分别是用在什么地方呢?我们初步解释一下,this是指向当前对象的指针(姑且用C里面的指针来看吧),self是指向当前类的指针,parent是指向父类的指针。我们这里频繁使用指针来描述,是因为没有更好的语言来表达。
这么说还不能很了解,那我们就根据实际的例子结合来讲讲:
Php代码
(1) this
class UserName
{
//定义属性
private $name;
//定义构造函数
function __construct( $name )
{
$this->name = $name; //这里已经使用了this指针
&nbs ......
中文空格这里面有好几种:没有简单的解决问题的方式,比如半角全角空格,比如段落符都会显示为空白的,然后让人们误解它是空格,所以去掉空格之前一定要先确认自己的是不是空格,我下面分析一下这两种的解决办法。
(1)/[\s| ]+/这个就可以,注意|后面的跟的是全角空格
(2)mb中的正则替换也可以试试
另外注意使用Unicode的时候,加上正则表达式描述符u
但由于汉语中显示为空格模样的有很多个,比如说我下面碰到的这么一个,它的unicode编码为C2A0,使用下面的表达式就能解决问题。
$new['content'] = preg_replace('/^[(\xc2\xa0)|\s]+/', '',
$new['content']);
这里有个细节: \xc2a0本来是一个Unicode字符,但是不能匹配多个,只能替换一个,【这里可能是因为字节的原因】后来突然找到这么一种写法,解决了问题,另外为了避免,中文空格和英文空格相混杂的情形,后面又加了个\s来清除。
其实在Unicode上的正则表达式确实不怎么好用。
......
不知从什么时候迷恋上了php,在朦胧之中开始了我的编程之路.......
听说csdn高手如云,很想结识志同道合的朋友,无兄弟不编程,希望大家一起开拓我们的前程,编程之路,不再孤单前行!
成功之路弯曲而漫长,相信不屈不挠的努力,相信年轻,胜利一定属于我们,加油! ......
// 连接两个字符串
<?php
$txt1 = "Hello";
$txt2 = "PHP";
echo $txt1." ".$txt2;
?>
// 取得字符串中的字符数
<?php
$txt1 = "Abc";
echo strlen($txt1);
?>
// 取得target在area中出现的首位置
<?php
$area = "012php";
$target = "php";
echo strpos($area, $target);
echo "\n";
echo strpos($area, "PHP");
?>
// 算数运算符
<?php
$intA = 9;
$intB = 3;
$intSum = $intA + $intB;
$intSub = $intA - $intC;
$intMul = $intA * $intB;
$intExc = $intA / $intB;
$intMod = $intA % $intB;
echo &q ......