나는 5000 명의 사용자 데이터베이스를 보유하고 있습니다. 이미 일주일에 한 번씩 cron 작업이 실행 중입니다. 처음에는 사용자가 100 명 중 하나 였을 때 정상적으로 작동했습니다. 이제 사용자가 5000 명에 도달하면 Cron 작업이 500-600 명 정도의 사용자에게 실행되어 중단됩니다. 나는 그것을 연구하여 HTTP가 무국적 프로토콜을 따르므로 새로운 요청이있을 때마다 cron 작업이 중단된다는 결론을 얻었습니다. 이제 내 질문은 어떻게 모든 5000 사용자에 대한 Cron 작업을 중단없이 실행할 수 있습니다. 도와주세요.대량으로 5000 명의 사용자를 대상으로 cron 작업을 계속 실행하는 방법
답변
시간과 메모리 제한을 초과 할 수 있으므로 PHP 오류 로그를 먼저 확인합니다. 데이터베이스 쿼리를 수행하는 중이라면 로그를 검사하여 한계에 도달했는지 확인합니다.
PHP 메모리 제한 메모리 제한은 현재 메모리가 부족하면 스크립트가 이상 실행할 수 증가
을 높입니다.
옵션 1
업데이트 php.ini 파일. 요구 사항에 맞게 256을 변경하십시오.
php_value memory_limit 256MB
옵션 2
요구 사항에 맞게 다시, 메모리 제한을 늘리 256을 변경 ini_set('memory_limit', nM)를 추가
ini_set('memory_limit','256M');
PHP 실행 제한 증가
현재 실행 제한 시간을 증가하여 PHP 파일에 set_time_limit(n)을 추가 (요구 사항에 맞게 300 변경) :
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
분할 위로 데이터베이스 결과 (일괄)
당신이를 반환하는 쿼리를 수행하는 경우 행 수가 많으면 시간이 초과 될 수 있습니다. 한계 및 오프셋을 사용하여 큰 쿼리를 더 작은 청크로 분할하는 다음 예제 로직을 구현해 볼 수 있습니다.
// Get total rows count
$total_rows = SELECT count(id) FROM users;
// Set a block size
$block_size = 300;
// Init starting offset
$block_offset = 0;
for($block = $block_offset; $block < $total_rows; $block = $block + $block_size) {
// Query
$data = SELECT * FROM table LIMIT $block_size OFFSET $block_offset;
// Loop through each row and process here
foreach($data as $row) {
.. code here
// You can also echo out something here so script is returning some data. Sometimes if nothing is sent back for a while it can cause issues (not generally for a cron though) e.g.
echo 'Done block ' . $block;
}
// Update block offset, so offset increments by block size (300)
$block_offset = $block_offset + $block_size ;
}
감사를 @Confused 만든에 필요한 것처럼 –
작동하는지 그리고 대답으로 받아들이는지 알려주십시오 – Springie
예. 확실합니다. 다음에 확실히 업데이트 할 것입니다. –
- 1. zend framework 2로 cron 작업을 실행하는 방법
- 2. Cron 작업을 사용하여 PHP 스크립트를 실행하는 방법
- 3. cron 작업을 통해 PHP 링크를 실행하는 방법
- 4. cron 작업을 통해 PHP 파일을 실행하는 방법
- 5. PHP 스크립트를 실행하는 cron 작업을 추가하는 방법
- 6. bazel 명령을 실행하는 CRON 작업을 만드는 방법
- 7. Node.js 용 Cron 작업을 실행하는 방법
- 8. 시간과 성공에 cron 작업을 실행하는 방법?
- 9. 정확한 시간에 django-cron 작업을 실행하는 방법
- 10. 대량으로 UPDATE 쿼리를 실행하는 방법
- 11. 노드 Cron 작업 배열을 메모리에서 계속 실행하는 가장 좋은 방법
- 12. VS200에서 200 명의 사용자를 대상으로 웹 성능 테스트를 실행하는 방법은 무엇입니까?
- 13. 다른 cron 작업이 완료되면 cron 작업을 실행하는 방법은 무엇입니까?
- 14. Imagick으로 PHP로 cron 작업을 실행하는 방법은 무엇입니까?
- 15. 이 cron 작업을 효과적으로 실행하는 방법은 무엇입니까?
- 16. 루트 계정에서 cron 작업을 실행하는 것이 안전합니까?
- 17. 클라우드 서버에서 cron 작업을 사용하여 .NET exe를 실행하는 방법
- 18. PHP - 작업 큐와 같은 cron 작업을 하나씩 실행하는 방법
- 19. 몇 분마다 몇 시간마다 cron 작업을 실행하는 방법
- 20. 루트 사용자 대신 cron 작업을 사용자로 실행하는 방법
- 21. symfony 작업을 사용하여 cron 작업을 작성하는 방법
- 22. 큰 cron 작업을 여러 cron 작업으로 분할하십시오.
- 23. 다른 cron 작업의 결과를 기반으로 cron 작업을 실행하는 방법 (또는 실행하지 않는 방법)
- 24. Windows에서 Cron 작업을 사용하는 방법?
- 25. 크론 (cron) 작업을 시작하는 방법
- 26. Symfony2에서 cron 작업을 만드는 방법
- 27. SQLyog에서 cron 작업을 설정하는 방법
- 28. yii에서 cron 작업을 설정하는 방법
- 29. Magento에서 cron 작업을 설정하는 방법
- 30. 특별한 cron 작업을 만드는 방법?
먼저 0 ~ 100 .. 1백-2백초 및 대한 실행처럼 .. 배치를 작성 등등 .. 내가 N 크론없이이 .. – Confused
다음이 될 것입니다, @Springie 나는 이것을 시도 할 것이다. –