SSH와 nohup을 통해 실행되는 PHP 스크립트를 작성했습니다. 데이터베이스에서 레코드를 처리하고 처리해야합니다 (예 : 일부 이미지 처리, 일부 행 업데이트).메시지없이 CLI cli 스크립트가 응답하지 않습니다.
작은로드에서 최대 10k 레코드까지 정상적으로 작동합니다. 나는 약 40k 레코드를 처리하는 좀 더 큰 데이터 세트를 가지고있다. (많이는 아니지만, 각 레코드가 다운로드하고 50 이미지를 처리해야 할 때 많은 작업을 추가한다.)
큰 데이터 세트는 처리하는 데 며칠이 걸릴 수 있습니다. 때로는 디버그 로그에 메모리 오류가 있음을 알 수 있습니다.이 오류는 충분히 명확합니다. 그러나 때로는 스크립트가 "죽어"나타나거나 좀비로가는 경우가 있습니다. 디버깅 로그의 내 꼬리가 멈추고 오류 메시지없이 nohup 로그의 끝 부분이 오류없이 끝나고 프로세스는 여전히 다음과 같은 ps 목록에 표시됩니다.
26075 pts/0 S 745 : 01/usr/bin/php ./import.php
하지만 아무런 작업도 이루어지지 않았습니다.
아무도 프로세스가 종료되는 이유에 대해 나에게 아이디어를 줄 수 있습니까? 필자가 알 수있는 한 뻔한 일들 (PHP 스크립트 타임 아웃 및 메모리 문제와 같은)은 하나의 요소가 아닙니다. 어떤 조언
에 대한덕분에 PS--이는 GoDaddy와 VDS (나의 선택)를 호스팅하고 있습니다. 나는 코드에서 재정의 한 것 (set_time_limit (0);)에도 불구하고 godaddy가 어떤 종류의 제한을 가지고 있다고 의심합니다.
(1) 처리를 작은 청크로 분할 할 수 없습니까? (2) 화면 대신에 nohup을 사용하는 이유는 무엇입니까? –
음, 한 번에 500 레코드 씩 실행됩니다. 부하를 분산시키는 다른 전술이있을 것이라고 확신하지만, 합리적인 것처럼 보입니다. 단지 시간이 많이 소요됩니다. 초기 가져 오기 후에는 레코드 업데이트가 훨씬 작고 관리하기 쉽습니다. 화면에 대해 읽었지만 경험이 없습니다. 화면을 사용하면 어떤 이점이 있습니까? 감사합니다 – julio