일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 |
- Laravel
- Apache
- HTML
- 전략
- php
- 경영
- function
- Ajax
- OOP
- jquery
- composer-php
- JavaScript
- Linux
- Session
- MySQL
- 웹하드추천
- file-upload
- Forms
- UTF-8
- date
- curl
- variables
- 무료다운로드쿠폰
- string
- post
- 웹하드순위
- Arrays
- Regex
- JSON
- Today
- Total
개발! 딱 깔끔하고 센스있게!
PHP 에서 코드 블록 초과 검사 본문
만약 한 코드블록이 PHP 에 너무 오래 걸리면 중지할 방법이 없을까요?그런 것 같습니다:
//Set the max time to 2 seconds $time = new TimeOut(2); $time->startTime(); sleep(3) $time->endTime(); if ($time->timeExpired()){ echo 'This function took too long to execute and was aborted.'; }
그것은 완전히 위와 같을 필요는 없지만 로컬 PHP 함수나 종류가 이런 일을 할 수 있을까?
편집: Ben Lee 는 pcntu fork 로 주어진 답안은 완벽한 해결 방안일 뿐, 윈도 (Windows) 에 적용되지 않습니다.
PHP 로 이를 이룰 수 있는 방법이 없습니다.
PHP는 윈도우와 리눅스에 적용되지만 외부 라이브러리는 필요 없습니다.
편집 2:Xzkto의 해결 방안은 어떤 상황에서 유효하지만 일치하지 않고 이상을 잡을 수 없는 것 같습니다.
내가 무엇을 시도하든.용례 가 단원 테스트 의 초과 시간 을 검사하고 있다만약 시험이 초과되면, 나는 그것을 멈추고 다음 테스트로 넘어가고 싶다.
대답
포크 프로세스를 통해 부모 프로세스 프로세스를 사용하여 이 작업을 완성할 수 있습니다.
pcntlu fork 은 파생 프로세스 방법으로 메모리 중 거의 같은 프로그램을 병행합니다.
한 프로세스 프로세스 pcntlu fork 이 정정수를 되돌리기 위해서, 그 프로세스의 id 에 대응합니다.
다른 과정에서 서브프로세스 pcntlu fork 이 0으로 돌아간다.
다음은 예입니다:
$pid = pcntl_fork(); if ($pid == 0) { // this is the child process } else { // this is the parent process, and we know the child process id is in $pid }
기본 구조입니다.
다음 단계는 프로세스 시간을 추가합니다.
당신의 물건은 소자 프로세스에서 실행됩니다.
아버지 프로세스는 감시와 시간의 프로세스를 담당할 것입니다.
그러나 한 프로세스 (아버지 프로세스) 를 다른 프로세스를 죽이기 위해 신호가 필요하다.
신호는 프로세스 통신의 방식이었지만 "바로 끝내야 한다"는 신호는 SIGKILL 이다.
posixu kill 으로 이 신호를 보낼 수 있습니다.
그래서 부모님은 2초 후에 아이를 죽였어야 합니다.
이렇게.
$pid = pcntl_fork(); if ($pid == 0) { // this is the child process // run your potentially time-consuming method } else { // this is the parent process, and we know the child process id is in $pid sleep(2); // wait 2 seconds posix_kill($pid, SIGKILL); // then kill the child }
'개발 스크랩 메모 > PHP' 카테고리의 다른 글
PHP 출력 버퍼 (0) | 2020.12.23 |
---|---|
PHP 에서 올린 그림을 제출한 후 데이터베이스에 저장하지 않고, 미리 보기를 표시합니까? (0) | 2020.12.23 |
PHP 가 문자열 5개 전에 단어를 얻는 가장 좋은 방법은 무엇입니까? (0) | 2020.12.23 |
int 및 integer 사이의 PHP 차이 (0) | 2020.12.23 |
php 그룹 을 jquery 함수 에 전달 (0) | 2020.12.23 |