2012-02-17 2 views
3

이 코드 :3 줄의 코드를 동시에 실행할 수 있습니까?

$ip1 = `/usr/bin/dig $host1`; 
$ip2 = `/usr/bin/dig $host2`; 
$ip3 = `/usr/bin/dig $host3`; 

실행 하나 하나. 문제는 발굴 응답 속도가 임의적이라는 것입니다. 그것은 빠르거나 10 초 이상일 수 있습니다. 내 질문에 어떻게 같은 페이지에서 동시에이 3 줄의 코드를 실행할 수 있습니까?

나는 3 개의 다른 페이지에서 달리기 같이 다른 접근을 받아 들일 용의가있다. 나는 array_chunk($input_array, 3)입니다. $input_array 위의 3 가지 다른 조회에서 실행할 수있는 값을 포함하는 mysql 쿼리의 결과입니다. 쿼리를 세 부분으로 나눴습니다. 이제 문제는 3 부분을 3 개의 다른 페이지로 보내고 발굴 조회를 수행하는 방법을 모른다는 것입니다. 나는 형식으로 만하는 법을 알고 있습니다. 그래서 위의 코드를 보여주었습니다. 나는 지금 비어있다.

도와주세요. 미리 감사드립니다.

+1

@MarkBaker [역 따옴표는 쉘 명령을 실행 (http://php.net/manual/en/language.operators.execution.php)의 ['는/usr/빈/dig'] (HTTP : //linux.die.net/man/1/dig)이 하나입니다. – Powerlord

+0

나는 교정되었다 - 하루의 새로운 학습 내용 –

+0

10 초 동안 무엇을하고 싶습니까? – webbiedave

답변

0

정상에 두 번째 주석에 제공되는 생각하십시오 :

Does PHP have threading?

PHP는 내가 아는 한 멀티 스레딩을하지 않습니다, 그러나 이것은 백그라운드 프로세스로 각각 실행하는 방법입니다 . 이 페이지에서 실행되는 경우

+0

이론적으로이 질문에 대답 할 수 있지만 여기에 답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 바람직합니다 (http://meta.stackexchange.com/q/8259). –

0

글쎄, 당신은 또한 아주 쉽게 여기

수행 할 수 있습니다 자바 스크립트 라이브러리 일부 JQuery와

http://api.jquery.com/category/ajax

에서 아약스 사용 설명서의 사용, Ajax를 사용하려고 할 수 있습니다
0

exec()를 사용하는 한 백그라운드에서 쉘 명령을 실행할 수 있으며, 세 번째 인수를 파일 또는 다른 출력 스트림으로 지정하십시오. 그렇지 않으면 PHP는 다음 코드 행을 실행하기 전에 명령 실행이 완료 될 때까지 기다립니다. 이 멀티 스레딩되지

http://php.net/manual/en/function.exec.php

1

, 또한, 개봉 된 파일을 도메인 이름 서버에서 3 조회를 실행하려고하고, 각 호스트에 따라 캐싱 시간을 당신의 NS 서버 또는 호스트, 속도가 다를 수 있습니다.

$ dig uol.com.br aol.com nytimes.com 

이 한 번 사용에서 3 조회를 가져올 것 : 발굴 지원이 있기 때문에,

$ dig uol.com.br; dig aol.com; dig nytimes.com 

또는 더 나은 : 이해하면

, 당신은 당신이 쉘 배치를 사용하여 원하는 것을 얻을 수 있습니다 ';'로 연결된 하나의 명령 행; 몇 가지 방법이 있습니다

+0

하지만 모든 조회가 순차적으로 완료되지는 않았습니까? 이것이 어떻게 변화합니까? – webbiedave

1

을하는 데 도움이

$hosts[] = 'aol.com'; 
$hosts[] = 'uol.com.br'; 
$hosts[] = 'nytimes.com'; 

passthru('dig '.implode(' ',$hosts)); 

희망 :

이 사용을 배열을 구현합니다.

  1. 하나의 ip를 반환하고 데이터베이스에서 업데이트하는 작은 PHP 스크립트를 작성하십시오. exec()로이 프로세스를 실행하십시오. 주 PHP 프로그램에서 모든 프로세스 상태가 데이터베이스에서 "완료"될 때까지 대기합니다. db로부터 모든 결과를 얻으십시오. 주 : 프로세스를 백그라운드에서 실행하려면 nohup 매개 변수를 사용하십시오.

  2. 목표를 달성하기 위해 PHP pcntl을 사용하십시오.

관련 문제