以下都是转载, 简单说下, php是不支持多线程的。。。。
PHP语言本身是不支持多线程的. 总结了一下网上关于PHP模拟多线程的方法, 总的来说, 都是利用了PHP的好伙伴们本身所具有的多线程能力. PHP的好伙伴指的就是LINUX和APACHE啦, LAMP嘛.
另外, 既然是模拟的, 就不是真正的多线程. 其实只是多进程. 进程和线程是两个不同的概念. 好了, 以下方法都是从网上找来的.
1. 利用LINUX操作系统
<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(5);
}
?>
上面存成test.php, 然后写一段SHELL代码
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q test.php &
done
2. 利用fork子进程(其实同样是利用LINUX操作系统)
<?php
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待进程结束
$intNum = 10; /// 进程总数
$pids = array(); /// 进程PID数组
echo ("Startn");
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();/// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息
if(!$pids[$i]) { ......
类文件wordsplit.class.php:
<?php
/********************************************************************
* DirCMS中文分词类 beta 1.0
* ---------------------------
* begin : 2010-5-11 beta 1.0
* update : 2010-5-11 beta 1.0
* copyright : (C) 2009 DirCMS
* email : uuturn@126.com
* author : 穆红伟 M QQ:251171960
* algorithm : 反向最大匹配算法 【注意:本文件需保存为UTF-8格式】
*
* $Id: wordsplit.class.php,v 1.0.0 2010-5-11 9:14:01 M Exp $
********************************************************************/
class wordsplit
{
public $dicloadtime; // 词典载入时间
public $splitwordstime; // 分词时间
private $starttime; // 分词开始时间
private $splitchar=' '; // 切割符,默认为空格
private $wordsdic=array(); // 词库(为键值为词,值为词频的数组) 本分次尚未用到词频
private $cnnumber='0|1|2|3|4|5|6|7|8|9| ......
真兄弟,讲义气,同甘苦,共进退。
《兄弟连》电影的上映,大家纷纷给出了好评。不就是一部战争片么,为何有如此强烈的响应?首先这是一部战争片并没错,但《兄弟连》电影更多的是洋溢着那种相濡以沫的兄弟情义,坚如磐石。多元化的现代社会,大家在交往过程中,人际关系越来越复杂,大都处于那种相互利益关系,身边的真兄弟寥寥无几。兄弟情谊在我们的生活是非常重要的,这种情谊延伸到我们的软件开发也是要领,在软件开发团队中,一个团队是否强大,并不是看该团队顶尖技术人员的多和少,而是看该团队是否团结一心。一个团队顶尖技术人员再多,但不团结,最终还是会瓦解。反之,一个团队有着坚如磐石的兄弟情谊,同甘苦,共进退,不断提升,最终才是胜利者。
兄弟连PHP学院秉承着“无兄弟,不编程”这种思想,是非常值得大家学习的。我们全国这么多兄弟想学编程,兄弟连PHP学院定期给我们免费的讲座、培训,是真哥们也~。或许不少人会这样认为,兄弟连纯粹就是为了招生谋取个人利益,但我想反驳一句,哪个培训学校能有这么多 ......
假如一个textarea中有N多行的数据,要将它转为PHP的一维数组,
<form id="textarea_test" action="textarea.php" method="post">
<textarea cols="50" rows="5" name="aa" id="abc" >
<?php
$str = $_POST['aa'];
//var_dump($str);
//$str = "chenjinle le";
$array = explode("\n", trim($str));
var_dump($array);
?> ......
php cli命令行模式是WIN下的一个SHELL,不需要APACHE的支持就能执行PHP脚本的脚本,并且是持续执行的。这些特点很容易利用来快速测试PHP脚本。今天就特意找来一些资料,整理了一下,权当复习。
D:\AppServ\php5>php -help
Usage: php [options] [-f] <file> [--] [args...]
php [options] -r <code> [--] [args...]直接执行代码
php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--]
[args...]
php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--]
[args...]
php [options] -- [args...]
php [options] -a
-a Run interactively交互运行
-c <path>|<file> Look for php.ini file in this directory在这个目录寻
找php.ini文件
-n   ......
今天刚学完mysqli,去我的IDC运营商那看了一下,发现他们的虚拟主机居然不支持,我又去其他几家看了看,有的支持有的不支持。
我就想自己写个类,让他去判断,能用mysqli就用mysqli,否则就用原始的mysql函数。不过问题马上就来了,自己写类会不会导致执行效率变低了呢?于是我就进行了如下测试。
这是用来计时的类:
/**
* 计算代码执行时间
* $counting : 当前的计时状态
* $startTime : 开始计时的时间
* $totalTime : 代码执行的用时
* getTime() : 取得当前时间(以微秒为单位)
* start() : 开始计时
* show() : 显示执行代码的用时
*
*/
class Counter
{
private $counting;
private $startTime;
private $totalTime;
function __construct(){
$this->start();
}
private function getTime(){
list($msec,$sec) = explode(' ',microtime());
return $sec+$msec;
}
function start(){
$this->counting = TRUE;
$this->startTime = $this->getTime();
}
function stop(){
$this->counting = FALSE;
......