>  기사  >  백엔드 개발  >  PHP에서 일괄 이미지 처리를 수행할 때 프로그램 실행 시간이 초과됩니다.

PHP에서 일괄 이미지 처리를 수행할 때 프로그램 실행 시간이 초과됩니다.

小云云
小云云원래의
2018-02-22 11:04:532152검색

이 일괄 처리는 프로젝트 자체가 여러 번 아웃소싱되었기 때문에 사진이 곳곳에 저장되어 있고, 특별한 썸네일 생성이나 균일한 크기의 사진이 없습니다. 이번에는 이미지와 이미지가 혼합된 원본 데이터에서 사진을 추출합니다. 지정된 디렉터리로 이동하여 크기를 자르고 해당 썸네일을 생성한 후 결과를 데이터베이스에 저장합니다.

일괄 프로그램 처리 과정에서 프로그램 실행 시간이 너무 길어져 504 오류 등이 발생할 수 밖에 없습니다. 서버 구성을 조정하는 것은 결국 좋은 해결책이 아니므로 결국 생산에 영향을 미치게 됩니다. 환경...

근데 저는 게으른 편이라 한 번 추출한 사진에 페이징 요청 처리를 하고 싶지 않네요^_^

그런데 한번에 처리되는 데이터에서 추출할 수 있는 최대 사진 수는 3000장입니다 ~

본론으로 넘어가겠습니다. 우리의 주요 목적은 프로그램 실행 시간을 최대한 연장하여 캡처해야 할 모든 사진을 캡처하고 처리가 완료되어 데이터베이스에 기록되는 것입니다.

우리 환경은 nginx 기반의 PHP5.6입니다. 우선 코드에 주의해야 합니다. 하나는 php.ini 조정을 피하는 set_time_limit(0)입니다. 물론 최대 메모리와 같은 몇 가지 기본적인 사항도 있습니다. 등은 여전히 ​​조정이 필요합니다. 다른 하나는 컬의 CURLOPT_TIMEOUT을 설정해야 합니다(원격 사진을 캡처하기 위해 CURL을 사용합니다). 시간 초과 후에 잡아내면 뭔가 문제가 있는 것이므로 그냥 포기하세요. 이 시간 초과가 설정되지 않으면 런타임 중에 오류가 계속 보고됩니다.

첫 번째 단계는 nginx 프로그램 실행 시간입니다.

fastcgi_send_timeout 900s;

fastcgi_read_timeout 900s; 그 가치, 거기 고객님의 상황에 맞게 시간을 설정하시고, 조정 후 서비스를 다시 시작해주세요.

MYSQL은 또한 시간 초과 오류를 보고합니다. my.ini를 수정하여 구성을 추가하거나 수정합니다.

wait_timeout=2880000

interactive_timeout=2880000

max_allowed_packet=100M

위 내용을 적용하려면 mysql을 다시 시작하세요. 설정, 기본 스캔 타임아웃 오류가 보고된 다양한 상황을 해결하기 위해 3박 2일 동안 프로그램을 실행하여 총 86G 이미지를 수집하고 생성했습니다.

이 작업은 그다지 권장되지 않는다는 점을 다시 한 번 강조하고 싶습니다. 특히 프로덕션 환경에서는 많은 문제가 발생할 수 있습니다. 가장 중요한 것은 배치 작업을 완료한 후 위의 설정을 복원하는 것입니다~

관련 권장 사항:

WeChat Mini 프로그램 정보

(고급) PHP 일반 이미지 처리 클래스의 이미지 처리 문제 요약

PHP 이미지 처리 클래스의 phpThumb 매개변수 사용 소개

위 내용은 PHP에서 일괄 이미지 처리를 수행할 때 프로그램 실행 시간이 초과됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.