2012-02-21 3 views
3

에서 비동기 처리를 할 수 사용자가 페이지를 방문합니다 (일부는 방대한 양). 3 개의 쿼리를 병렬로 실행 (큐에서 7 개)하는 가장 확장 가능한 솔루션은 무엇입니까? 쿼리가 끝나면 큐에서 다른 쿼리를 실행하십시오.가장 좋은 방법은 내가 다음과 같은 결과를 취득 MSSQL에 대규모 쿼리를 수행하는 (PHP에서) 시스템을 구축 할 필요가 PHP

페이지를 즉시로드해야하며 쿼리가 끝나면 사용자에게 쿼리의 응답을 표시합니다 (순서는 그리 중요하지 않음).

AJAX, beanstalkd, NodeJS, libevent 및 Gearman을 고려하거나 Java에서 웹 서비스로 구현 (스레드 및 병렬 처리 사용).

PS : 나는 또한 AJAX PUSH ENGINE (APE - http://www.ape-project.org/)xRML (http://www.xrtml.org/)을 찾았지만

+0

누군가 SQL을 SQL에서 MSSQL으로 변경 했으므로 (SQL Server로 태그 지정 했으므로) 실제로 어떤 유형의 데이터베이스를 사용하고 있습니까? –

+0

죄송합니다, 그것은 나 .. MSSQL을 사용하고 있습니다 – pufos

답변

1

은 참고비동기 지원이 대답은 특정

의 MySQL에 MSSQL을 요청하지 않은 질문의 첫 번째 개정되어 그것을 사용하지 mysqlnd 드라이버를 사용할 때 MySQLi를 통해 쿼리합니다.

mysqli_query()에 대한 인수가인 MYSQLI_ASYNC (mysqlnd에서 사용 가능)을 전달하면 인수가 비동기 적으로 쿼리를 수행합니다. mysqli_poll()mysqli_reap_async_query()은 그런 쿼리로부터 결과를 얻기 위해 사용됩니다.

mysqlnd에 대한 병렬, 백그라운드 및 비동기 가져 오기 아이디어에 대한 자세한 설명은 http://blog.ulf-wendel.de/?p=170을 참조하십시오.

+0

답변을 주셔서 감사합니다 – pufos

+0

당신은 또한 MSSQL에 이것을 사용할 수 있습니까? –

+0

@MattEllen no. ext/mysqli는 MySql 데이터베이스 용입니다. 나는 MSSQL이 ext/mssql을 통해 비동기 쿼리를 지원하는지 여부를 모른다. 그것은 문서에서 그 것처럼 보이지 않습니다. – Gordon

1

내 솔루션은 쿼리 프로세스를 백그라운드 프로세스 (데몬?)가 서비스하도록 beanstalk 메시지 큐에 넣는 것입니다. 작업이 완료되면 결과 세트가 어딘가에 캐시됩니다.

로드 된 페이지는 AJAX (일종의 폴링 루프에서 - 예 : 10 초마다 요청)를 사용하여 결과가 준비되면 서버 측 응용 프로그램에서 찾습니다 (캐시에서 결과를 찾음). 세트).

서버 측 응용 프로그램에서 결과를 사용할 수있게되면 해당 페이지를 div로로드하는 페이지로 보냅니다.

+0

AJAX long pull? AJAX는 결과를 검색하고 페이지를 동적으로 업데이트하는 유일한 솔루션입니까? – pufos

관련 문제