사용자 당 프로세스를 생성해야하는 웹 응용 프로그램을 개발 중입니다. 특정 페이지로 이동할 때 수행됩니다. 로그온하는 각 사용자에 대한 PHP 프로세스
<?php
session_start();
while($_SESSION['continue']) {
// Do some processing
session_write_close();
sleep(30);
session_start();
}
exit();
사용자가 페이지에서 멀리 탐색
하면 '계속 :이처럼 (다음 앉아있는 데이터베이스/세션에서 데이터 항목을 읽고) PHP 스크립트를 호출하고 절전 모드로 전환 Ajax 호출이 '세션 변수가 false로 설정되고 위의 PHP 프로세스가 종료됩니다.수행중인 처리가 중요하지 않습니다. 데이터베이스에서 몇 가지 레코드를 읽고 일종의 검사를합니다.
질문 : 좋은 생각입니까? 많은 사용자가 온라인 상태 일 때 명백한 메모리 문제가 발생합니까?
많은 감사, Arvy
표준 아파치 하위는 한 번에 하나의 요청 만 처리 할 수 있습니다. 100 명의 자녀를 허용하는 경우 사이트의 MOST 사용자 99 명 중 1 명이 한 페이지를 적극적으로로드하고 99 명의 자녀가 do-not-very-much 루프를 실행합니다. 그리고 100 번째 자식이 루프를 실행하기 시작하면 효과적으로 사이트의 모든 사람을 차단합니다. 이제 계속 변수를 변경할 수 없으며 사이트가 종료되었습니다. –
물론, 스크립트가 max_execution_time에 도달하고 Apache에 의해 죽기를 바랍니다.하지만 그 동안에는 아무 일도 일어나지 않을 것입니다. –
@MarcB 자물쇠를 막기 위해 아이들을 더 높게 설정하고 현재 수를 확인하는 방법을 살펴 보겠습니다. 제한 시간 제한을 수동으로 설정했습니다.이 제한 시간은 상당히 높지만 수행하고 싶은 시간에 필요합니다. 그래서 당신이 말했듯이 결국 그것은 밖으로 걷어차지만, 시간이 좀 걸릴 것입니다! 귀하의 의견에 감사드립니다. – arvy3