2011-10-19 1 views
2

나는 잠시 전에 PHP 검색 엔진을 만들었는데, 나는 이미 그것을 검색했고 스택 오버플로에 대해 PHP가 여러 스크립트를 동시에 액세스하는 것에 대해 이야기하고 있지만 추가, 수정 등에 관해서 많은 질문을 보았습니다. ...PHP 의심. 두 사람이 같은 스크립트에 동시에 액세스하면 어떻게됩니까?

검색 엔진 (또는 사용자 입력을 기반으로하는 다른 스크립트가 다른 응답을 생성하는 경우)에서 검색을 끝내려면 20 초가 걸립니다.

사용자 A는 스크립트

사용자 B가 (아직 이렇게 스크립트가 '대답'하지 않은 사용자 A) 사용자 A

는 무슨 일이 일어날 것입니다 10 초 후에 스크립트를 액세스하는 액세스? 서버가 "파일의 다른 인스턴스를 실행"할 것이므로 두 사용자 모두 응답을 받거나 엉망이 될 것입니까?

PHP 스크립트가 실행을 끝내는 데 오랜 시간이 걸리고 사람이 응답을 기다리지 않고 떠나는 경우에도 PHP 스크립트는 끝까지 도달 할 때까지해야 할 모든 작업을 수행합니까? (논리는이 마지막 질문에 사람이 그냥 요청을하기 때문에 스크립트가 끝날 때까지 모든 작업을 수행 한 다음 응답이 오기를 기다리고 여전히 닫히지 않으면 PHP 스크립트가 실행되지 못하도록 막을 것입니다. 그러나 나는 완전히 확신하고 싶어서 여전히 묻고있다.)

답변

3

두 사람 모두 당신의 스크립트에 대한 자신의 인스턴스를 가지고있다. 데이터가 수정되면 데이터 일관성과 관련하여 여전히 문제가있을 수 있습니다. HTTP가 상태없는 프로토콜이기 때문에 결과를 기다리지 않고 사람이 떠나면 스크립트가 끝까지 실행됩니다.

+0

데이터가 수정되면 나쁜 일이 일어날 것이라고 생각했지만 데이터가 수정되지 않아도 나쁜 일이 일어날 것이라고 염려했습니다.하지만 다행히도 그렇지 않습니다. 답장을 보내 주셔서 감사합니다. – wxiiir

0

모든 사용자의 세션이 스레드로 처리됩니다. 모든 것은 대기열에 있고 아무것도 망쳐 놓지 않습니다.

그러나 일부 조건에서는 문제가 발생할 수 있습니다.

예 : 사용자가 DB에서 특정 필드를 요청했지만 다른 사용자가 첫 번째 사용자의 스레드가 대기 중이거나 일시 중단 된 동안 해당 필드를 삭제합니다. 그러나 그것은 정말로 후방이며 예외가 발생하면 예외는 왕위에 올 것이고 그것을 처리하는 것이 우리의 대본 임무입니다.