>  기사  >  백엔드 개발  >  PHP 다중 스레드 동시성 구현 방법

PHP 다중 스레드 동시성 구현 방법

高洛峰
高洛峰원래의
2016-12-21 11:43:481354검색

이 기사의 예에서는 PHP의 다중 스레드 동시성 구현 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

Java의 멀티스레딩은 새로운 스레드입니다. PHP는 Apache에 의존하며 Linux 하단에 멀티스레딩 방법이 있습니다.

Apache 서버를 제어할 수 없는 경우 PHP 동시성을 시뮬레이션하는 방법은 다음과 같습니다.

<?php
if(function_exists(&#39;date_default_timezone_set&#39;)) {
  date_default_timezone_set(&#39;PRC&#39;);
}
function a()
{
 $time = time();
 sleep(3);
 $fp = fopen(&#39;result_a&#39;.$time.&#39;.log&#39;, &#39;w&#39;);
 fputs($fp, &#39;Set in &#39; . Date(&#39;h:i:s&#39;, time()) . (double)microtime() . "rn");
 fclose($fp);
}
function b()
{
 $time = time();
 sleep(3);
 $fp = fopen(&#39;result_b&#39;.$time.&#39;.log&#39;, &#39;w&#39;);
 fputs($fp, &#39;Set in &#39; . Date(&#39;h:i:s&#39;, time()) . (double)microtime() . "rn");
 fclose($fp);
}
if(!isset($_GET[&#39;act&#39;])) $_GET[&#39;act&#39;] = &#39;a&#39;;
if($_GET[&#39;act&#39;] == &#39;a&#39;)
{
 a();
}
else if($_GET[&#39;act&#39;] == &#39;b&#39;) b();
?>

위 코드는 로컬로 작성되었습니다. 파일.

localhost/a.php에 접속하여 최대한 빠르게 두 개의 브라우저 탭을 동시에 열어보면, 두 파일의 생성 시간 차이가 3초임을 알 수 있습니다

하지만 localhost/a .php?act=b를 방문하면 /a.php?act=a를 다시 방문하면 두 파일이 거의 동시에 생성되었음을 알 수 있습니다.

Apache의 경우 동일한 URL은 스레드(또는 프로세스)를 의미하지만 다른 URL은 동시성을 의미합니다.

PHP 내부에 다운로드 작업이 있는 경우

function runThread()
{
 down("http://localhost/test/a.php?act=a");
}
if($_GET[&#39;act&#39;] == &#39;run&#39;)
{
 echo &#39;start:&#39;;
 runThread();
 echo &#39; End&#39;;
}
   
http://localhost/test/a.php?act=run
http://localhost/test/a.php?act=run&s=2

주로 액세스하는 URL이 다른 한 다른 프로세스로 간주되어 동시성을 의미합니다. 파일생성시간은 3초가 아니다

로컬 리눅스 서버를 갖고 있는 친구들도 리눅스를 이용해 동시성 시뮬레이션을 할 수 있다

<?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

이 글이 PHP 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.


PHP 다중 스레드 동시성 구현 방법과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.