2012-11-15 3 views
0

내 서버 (스레드)에서 매 1 시간마다 PHP 스크립트가 실행 중입니다. 이 스레드가하는 일은 사용자가 엑셀 파일을 데이터로 업로드 할 수 있다는 것입니다. 스레드는 엑셀 파일의 데이터를 데이터베이스의 데이터와 비교하고 무언가를 수행합니다. 발견 된 행이없는 경우 데이터베이스의 일부 삽입과 관련이 없습니다.PHP 스크립트 스크립트 중단됨

$data = new Spreadsheet_Excel_Reader(); 
$data->read($file); 

라는 서버에 더 많은 XLS 파일을 업로드 할 수있는 사용자 : 내가 처음 파일을 읽을 File_3.xls File_1.xls, File_2.xls는 모든 데이터를 얻을 엑셀 파일을 읽으려면 내가 전화 모든 비교 작업은 모든 삽입 작업을 수행하며 때로는 Excel에서 6000 개가 넘는 행을 가져올 수 있습니다. 스레드가 오랫동안 실행되면 예를 들어 파일 1과 파일 2를 삽입 할 수 있고 파일이 6000+ 행과 같은 큰 파일임을 알게되었습니다. 오류 로그에 중단이 표시됩니다. 나는 그것이 독자의 잘못이라고 생각한다. 어떤 아이디어?

+0

정확한 오류 메시지는 무엇입니까? –

+0

중단되었습니다. 그게 다야. 그것과 함께 진짜로 작동하는 칸트 ... : D –

+0

그것의 PHP 5.4.7 도움이 –

답변

3

귀하의 서버가 여러 파일 포인터와 큰 배열 데이터를 보관할만큼 충분한 메모리 (RAM)를 가지고 있지 않다는 것을 알고 있습니다. 서버의 메모리를 늘리거나 다른 알고리즘을 사용해 XLS에서 데이터를 읽어 비교 삽입을 수행하십시오.

+0

그것에 대해 확실하지 않습니다. 왜냐하면 내가 60k 로우를 가져 오면 스크립트는 문제가있는 곳에서 스크립트를 읽은 다음 작은 스크립트를 실행하고 멈 춥니 다. –

+0

방금 ​​두 번째 파일을 읽기 전에 배열에서 unset()을 사용하는 것으로 나타났습니다. 문제가 있습니까? –

+0

ok 오류가 발생했습니다. 개인 변수를 설정 해제 할 수 없습니다. 중단 오류가 발생했습니다 ... –