Home >Backend Development >PHP Tutorial > 大家好, PHP 怎么模拟多线程

大家好, PHP 怎么模拟多线程

WBOY
WBOYOriginal
2016-06-13 12:53:07902browse

大家好, PHP 如何模拟多线程
大家好, PHP 如何模拟多线程

纠结了好久,也不行,

b.php的代码 

/**<br />
*Run<br />
*多线程机制<br />
*/<br />
function run($i){<br />
//连接服务器:注意如果你是以ssl/tls连接时,$host的值为:“ssl://www.example.com”即应加上"ssl://"前缀。<br />
//且$port值为443<br />
$host = $_SERVER['HTTP_HOST'];<br />
$port = 80;<br />
$fp = fsockopen($host,$port,$errorno,$errormsg); //连接服务器 <br />
if(!$fp){<br />
die("$errorno----------$errormsg");<br />
}else{<br />
<br />
$i        = "i=$i";//传递的数据<br />
$path    = '/a.php';//请求路径<br />
$method = 'POST'; //请求方法(POST方式)<br />
<br />
//HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。格式为:方法 路径/文件名 HTTP/1.1/r/n(协议版本)<br />
$post  = "$method $path HTTP/1.1/r/n"; <br />
//GET方式为:"GET /test/create_file.php?i HTTP/1.1/r/n";<br />
<br />
//Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。<br />
$post .= "HOST: {$_SERVER['HTTP_HOST']} /r/n";<br />
<br />
//Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型。<br />
$post .= "Content-type: application/x-www-form-urlencoded/r/n";<br />
<br />
//Content-length它指示HTTP体信息的长度(字节)。<br />
$post .= "Content-length: ".strlen($i)."/r/n";<br />
<br />
$post .= "Connection: Close/r/n/r/n";<br />
<br />
$post .= "$i/r/n";//POST方式传递数据,在GET方式时,此处不要。<br />
fputs($fp,$post);<br />
}<br />
fclose($fp);<br />
}<br />
<br />
//触发多线程   <br />
for($i=0;$i<=2;$i++){<br />
run($i);    <br />
}



a.php
$i = $_POST['i'];//GET方式请求时为:$i = $_GET['i']<br />
file_put_contents('d:s_'.$i.'_'.time().'.php',time());

php 多线程
------解决方案--------------------
刚刚学习php 呵呵
------解决方案--------------------
function conWrite($filename, $content)  <br />
{  <br />
    $filename_lock = $filename.'.lock';  <br />
    while(1) {  <br />
        if(file_exists($filename_lock)) {  <br />
            usleep(1000);  <br />
        } else {  <br />
            touch($filename_lock);//加锁  <br />
            $f = fopen($filename, 'w');  <br />
            fwrite($f,$content);  <br />
            fclose($f);  <br />
            unlink($filename_lock);  <br />
            break;  <br />
        }  <br />
    }  <br />
    if(file_exists($filename_lock)) {  <br />
        unlink($filename_lock);  <br />
    }  <br />
}  

------解决方案--------------------
个人采集经验,一直以来都是多线程就死机。。。感觉PHP对多线程的支持不太友好
------解决方案--------------------
php本身就不支持多线程
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn