2012-03-09 2 views
1

창고 관리 시스템을 만들고 있습니다.한 페이지에 많은 이미지가로드되지 않습니다.

오전에 스크립트가 실행되는 아침에 주문이 CSV로 제공됩니다.

각 주문의 상단에 php 만든 바코드를 넣습니다. 내가 사용하는 샘플 CSV는 약 100 개의 고유 주문을 가지고 있으므로 서버에서 주문을 인쇄 할 페이지를로드 할 때 100 개 이상의 요청이 발생하고 일부 이미지가 시간 초과됩니다.

소스를보고 작동하지 않는 링크를 열면 이미지가로드되어 브라우저에서 타임 아웃 메서드를 비활성화해야한다고 생각합니다.

다른 생각은 자바 스크립트를 통해 바코드를로드하는 것입니다.

제안 사항?

+1

그래서이 주문 페이지를 모두 생성하는 스크립트 하나를로드하고 있습니다. 각 스크립트는 고유 한 바코드를 사용하고 있습니까? 이미지가 실패하기 시작하면 계속 실패할까요, 그렇지 않습니까? – enygma

+0

php.ini에서 max_execution_time은 무엇입니까? – Milap

+0

브라우저에서 이미지를 미리로드하는 방법은 이미지가있는 페이지를 표시하는 것보다 어떻습니까? 구글 이미지 preloader 자바 스크립트. 스크립트에 – epascarello

답변

0

나는 enygma가 PHP 스크립트에 제한된 처리 시간을 가져다 줄 수 있다고 생각합니다. 때로는 30 초 후에 차단됩니다. 한 번에 모든 이미지를 생성하면 스크립트가 서버에서 종료되고 데이터 전송이 중지됩니다. 자바 스크립트에서로드하는 당신의 아이디어는 아마 당신이 한 번에 몇 가지 일을하거나 연속적으로하는 한 최선의 방법 일 것입니다.

0

PHP에서 세션을 시작하면 세션이 잠기고 세션이 릴리스 될 때까지 다른 PHP 스크립트에서 액세스 할 수 없습니다.

PHP를 사용하여 이미지를 생성 한 것을 기반으로합니다. 이는 사용자가 보는 것의 원인 일 가능성이 큽니다.

other questions에는 PHP 및 세션 작동 방식에 대해 좀 더 자세히 설명되어 있습니다. 하지만 이미지의 일부가 수신되지 않는 직접적인 원인 일 가능성이 높습니다. 각 스크립트는 세션을 읽고 종료 될 때까지 풀어주기 때문에 순서대로 처리되는 단일 직렬 대기열에 있습니다. 대기열의 끝에있는 요청은 어떤 방법 으로든 제한 시간을 초과하여 아무 것도 반환하지 않습니다.

따라서

, 전화 할 수 있도록 :

session_write_close(); 

를 가능한 한 빨리 다른 모든 PHP 요청을 차단하는 것을 방지하기 위해 세션에 대한 액세스를 필요로하는 모든 스크립트, 또는 더 나은 아직 사용하지 마십시오 세션 (예 : 인증을 위해 세션을 사용하는 경우 URL에 해시를 포함하고 이미지 요청과 비교하기 만하면됩니다.)

관련 문제