php 비동기 호출 방법
클라이언트 측과 서버 측 사이HTTP 프로토콜은 접속 통신을 하고 클라이언트는 요청을 하고 서버측은 요청을 받으면 처리를 실행하고 처리 결과를 반환합니다.
때때로 서버는 실행이 매우 소모된다그 때의 조작은, 이 조작의 결과를 클라이언트로 되돌릴 필요는 없다.단, php가 동시에 실행되기 때문에 클라이언트는 서비스 처리가 완료될 때까지 기다려야 다음 작업을 진행할 수 있습니다.걸음걸이.
따라서 시간이 걸리는 조작에 적합하다비동기적으로 실행되며, 서버가 요청을 수신하면 클라이언트에서 필요한 데이터를 처리한 후 반환되며, 다시 비동기적으로 서버에서 시간이 걸리는 작업을 수행한다.
1.Ajax 사용 및 img 태그
원리, 서버가 반환하는 html에 Ajax 코드 또는 img 태그를 삽입하여 img의 src가 실행되어야 할 프로그램입니다.
장점: 구현 간단, 서비스 제공호출할 필요 없음
단점: 실행 중, 찾아보기기기는 계속 loading 상태이기 때문에 이 방법은 진정한 비동기 호출이라고 할 수 없다
$.get("doRequest.php", { name: "fdipzone"} );
<img src="doRequest.php?name=fdipzone">
2.포펜 사용
popen을 사용하여 명령 실행레이, 문법:
// popen — 프로세스 파일 포인터 열기
resource popen ( string $command , string $mode )
pclose(popen('php /home/fdipzone/doRequest.php &', 'r'));
장점:집행 속도가 빠르다.
결점. 할 수밖에 없다 이번 : 1기계를 실행합니다.
2.. 인자를 대량으로 전달할 수 없
3. 생성할 때 방문자 수가 높다.많다.
3. 사용하고 있다. curl
시간이 초과되었습니다. 설정한 curl시간 CURLOPT_TI최소를 위해 MEOUT 1 ( 클라이언트가 1 ).1초를 기다리고 있다
<?php
$ch = curl_init();
$curl_opt = array(
CURLOPT_URL, 'http://www.example.com/doRequest.php'
CURLOPT_RETURNTRANSFER,1,
CURLOPT_TIMEOUT,1
);
curl_setopt_array($ch, $curl_opt);
curl_exec($ch);
curl_close($ch);
?>
4.fsockopen 사용
fsocopen이 최고죠.단점은 header 부분을 직접 붙여야 한다는 것이다
<?php
$url = 'http://www.example.com/doRequest.php';
$param = array(
'name'=>'fdipzone',
'gender'=>'male',
'age'=>30
);
doRequest($url, $param);
function doRequest($url, $param=array()){
$urlinfo = parse_url($url);
$host = $urlinfo['host'];
$path = $urlinfo['path'];
$query = isset($param)? http_build_query($param) : '';
$port = 80;
$errno = 0;
$errstr = '';
$timeout = 10;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
$out = "POST ".$path." HTTP/1.1\r\n";
$out .= "host:".$host."\r\n";
$out .= "content-length:".strlen($query)."\r\n";
$out .= "content-type:application/x-www-form-urlencoded\r\n";
$out .= "connection:close\r\n\r\n";
$out .= $query;
fputs($fp, $out);
fclose($fp);
}
?>
주의: 실행 중에 클라이언트 접속이 끊기거나 접속이 타임아웃될 경우 불완전한 실행이 발생할 수 있으므로 추가해야 합니다
ignore_user_abort(true) // 클라이언트 연결 해제 무시
set_time_limit(0) // 시간 초과 없이 실행
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 변수의 이름을 가져오는 방법 (0) | 2022.08.19 |
---|---|
HTTP 204와 205 애플리케이션 (0) | 2022.08.19 |
php 생성자가 다른 개수 매개 변수를 지원하는 방법 (0) | 2022.08.19 |
C를 사용하여 php 확장 만들기 (0) | 2022.08.19 |
php 짧은 URL 생성 (0) | 2022.08.18 |