백엔드 개발 PHP 튜토리얼 PHP 다중 스레드 동시성 구현 방법

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

Dec 21, 2016 am 11:43 AM
멀티스레딩

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<?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 내부에 다운로드 작업이 있는 경우

1

2

3

4

5

6

7

8

9

10

11

12

13

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초가 아니다

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

1

2

3

4

5

6

<?php

for ($i=0;$i<10;$i++) {

echo $i;

sleep(5);

}

?>

로그인 후 복사

저장 위의 내용을 test.php에 넣고 SHELL 코드를 작성하세요.

1

2

3

4

5

#!/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으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++ 함수 예외 및 멀티스레딩: 동시 환경의 오류 처리 C++ 함수 예외 및 멀티스레딩: 동시 환경의 오류 처리 May 04, 2024 pm 04:42 PM

C++ 함수 예외 및 멀티스레딩: 동시 환경의 오류 처리

멀티 스레드 환경에서 JUnit 단위 테스트 프레임워크 사용 멀티 스레드 환경에서 JUnit 단위 테스트 프레임워크 사용 Apr 18, 2024 pm 03:12 PM

멀티 스레드 환경에서 JUnit 단위 테스트 프레임워크 사용

PHP에서 멀티스레딩을 구현하는 방법은 무엇입니까? PHP에서 멀티스레딩을 구현하는 방법은 무엇입니까? May 06, 2024 pm 09:54 PM

PHP에서 멀티스레딩을 구현하는 방법은 무엇입니까?

Java 기능의 동시성과 멀티스레딩이 어떻게 성능을 향상시킬 수 있습니까? Java 기능의 동시성과 멀티스레딩이 어떻게 성능을 향상시킬 수 있습니까? Apr 26, 2024 pm 04:15 PM

Java 기능의 동시성과 멀티스레딩이 어떻게 성능을 향상시킬 수 있습니까?

다중 스레드 환경에서 PHP 함수는 어떻게 작동합니까? 다중 스레드 환경에서 PHP 함수는 어떻게 작동합니까? Apr 16, 2024 am 10:48 AM

다중 스레드 환경에서 PHP 함수는 어떻게 작동합니까?

C++의 멀티스레딩에서 공유 리소스를 처리하는 방법은 무엇입니까? C++의 멀티스레딩에서 공유 리소스를 처리하는 방법은 무엇입니까? Jun 03, 2024 am 10:28 AM

C++의 멀티스레딩에서 공유 리소스를 처리하는 방법은 무엇입니까?

멀티스레드 환경에서 C++ 메모리 관리의 과제와 대책은? 멀티스레드 환경에서 C++ 메모리 관리의 과제와 대책은? Jun 05, 2024 pm 01:08 PM

멀티스레드 환경에서 C++ 메모리 관리의 과제와 대책은?

C++에서 멀티스레드 프로그램을 테스트하기 위한 과제와 전략 C++에서 멀티스레드 프로그램을 테스트하기 위한 과제와 전략 May 31, 2024 pm 06:34 PM

C++에서 멀티스레드 프로그램을 테스트하기 위한 과제와 전략

See all articles