PHP 비동기 실행 방식 에 대한 자세 한 설명

2408 단어 php비동기 실행
1.클 라 이언 트 페이지 는 AJAX 기술 로 서버 의 장점 을 요청 합 니 다.가장 간단 하고 빠 른 것 은 클 라 이언 트 에 게 되 돌아 오 는 HTML 코드 에 AJAX 호출 을 삽입 하거나 img 탭 을 삽입 하 는 것 입 니 다.src 는 실행 할 시간 소모 스 크 립 트 를 가리 키 고 있 습 니 다.단점:일반적으로 Ajax 는 onLoad 이후 에 터치 해 야 합 니 다.즉,사용자 가 페이지 를 클릭 한 후에 닫 으 면 배경 스 크 립 트 를 터치 하지 않 습 니 다.img 라벨 을 사용 하면 엄격 한 의미 의 비동기 실행 이 라 고 할 수 없습니다.사용자 브 라 우 저 는 phop 스 크 립 트 의 실행 이 완료 되 기 를 오래 기다 리 고 있 습 니 다.즉,사용자 브 라 우 저의 상태 표시 줄 은 load 에 계속 표 시 됩 니 다.물론 script 태그 등 다른 유사 한 원리 도 사용 할 수 있다.2.popen()함수 이 함 수 는 프로 세 스 를 가리 키 는 파 이 프 를 엽 니 다.이 프로 세 스 는 파생 된 command 명령 으로 실 행 됩 니 다.프로 세 스 를 가리 키 는 파 이 프 를 엽 니 다.이 프로 세 스 는 파생 된 command 명령 으로 실 행 됩 니 다.그래서 호출 을 통 해 출력 을 무시 할 수 있 습 니 다.사용 코드 는 다음 과 같다.

pclose(popen("/home/xinchen/backend.php &", 'r'));
장점:첫 번 째 방법의 단점 을 피 했 고 빠르다.단점:이 방법 은 HTTP 프로 토 콜 을 통 해 다른 WebService 를 요청 할 수 없고 로 컬 스 크 립 트 파일 만 실행 할 수 있 습 니 다.또한 단 방향 으로 만 열 수 있 고 호출 된 스 크 립 트 에 대량의 인 자 를 입 을 수 없습니다.또한 방문 자가 많 을 때 많은 프로 세 스 가 발생 합 니 다.외부 자원 을 사용 했다 면,스스로 경쟁 을 고려 해 야 한다.3.CURL 확장 CURL 은 강력 한 HTTP 명령 행 도구 로 POST/GET 등 HTTP 요청 을 모 의 한 다음 에 데 이 터 를 얻 고 추출 하여'표준 출력'(stdout)에 표시 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다:

$ch = curl_init();
$curl_opt = array(CURLOPT_URL, 'http://www.example.com/backend.php',
                            CURLOPT_RETURNTRANSFER, 1,
                            CURLOPT_TIMEOUT, 1,);
curl_setopt_array($ch, $curl_opt);
curl_exec($ch);
curl_close($ch);
단점:질문 에서 설명 한 바 와 같이 CURL 을 사용 하려 면 CUROPT 를 설정 해 야 합 니 다.TIMEOUT 은 1(최소 1,답답 함)이다.클 라 이언 트 가 적어도 1 초 는 기 다 려 야 한 다 는 것 이다.4.fscokopen()함수 fsockopen 은 socket 프로 그래 밍 을 지원 합 니 다.fsockopen 을 사용 하여 메 일 발송 등 socket 프로그램 등 을 실현 할 수 있 습 니 다.fcockopen 을 사용 하려 면 header 부분 을 수 동 으로 연결 해 야 합 니 다.예 를 들 어 다음 과 같 습 니 다.

$fp = fsockopen("www.34ways.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />
";
} else {
    $out = "GET /index.php  / HTTP/1.1\r
";
    $out .= "Host: www.34ways.com\r
";
    $out .= "Connection: Close\r
\r
";
    fwrite($fp, $out);
    /*
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }*/
    fclose($fp);
}
따라서 fscokopen()함 수 는 귀하 의 요 구 를 만족 시 킬 수 있 을 것 입 니 다.한번 해 보 세 요.

좋은 웹페이지 즐겨찾기