이 기사의 예에서는 PHP의 다중 스레드 동시성 구현 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
Java의 멀티스레딩은 새로운 스레드입니다. PHP는 Apache에 의존하며 Linux 하단에 멀티스레딩 방법이 있습니다.
Apache 서버를 제어할 수 없는 경우 PHP 동시성을 시뮬레이션하는 방법은 다음과 같습니다.
<?php if(function_exists('date_default_timezone_set')) { date_default_timezone_set('PRC'); } function a() { $time = time(); sleep(3); $fp = fopen('result_a'.$time.'.log', 'w'); fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn"); fclose($fp); } function b() { $time = time(); sleep(3); $fp = fopen('result_b'.$time.'.log', 'w'); fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn"); fclose($fp); } if(!isset($_GET['act'])) $_GET['act'] = 'a'; if($_GET['act'] == 'a') { a(); } else if($_GET['act'] == 'b') 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['act'] == 'run') { echo 'start:'; runThread(); echo ' End'; } 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 중국어 웹사이트를 주목하세요!