2011-02-02 18 views
17

Kịch bản của tôi so sánh 2 cây nguồn, tạo bản đồ các tệp có thể thay đổi, so sánh băm MD5 và tạo gói khác.Lỗi nghiêm trọng: Thời gian thực hiện tối đa 0 giây vượt quá

Sau 28.000-29.000 file, PHP chấm dứt kịch bản với lỗi:

Fatal error: Maximum execution time of 0 seconds exceeded in /root/_PACKER-TESTER/core/diff.class.php on line 67 (standard in_array() call)

Tôi đã cố gắng để thiết lập max_input_time đến giá trị cao (hoặc không) - không có gì.

Đặt max_execution_time thành 99999999999999 không làm gì .... cùng lỗi.

+0

bạn thời hạn 999..999 nói đến về một số 47 bit, xa trên PHP Giới hạn 32 bit. –

+0

Bạn có đang chạy trong SafeMode không? ([tài liệu cho set_time_limit] (http://us.php.net/set_time_limit)) ... – ircmaxell

+0

Marc B - Đối với bài viết này tôi chỉ cần nhấn 9 nhiều lần không đếm bao nhiêu :) Ofkz trong mã tôi không vượt quá 32 bit :) – kiler129

Trả lời

9

Vấn đề được giải quyết, php xây dựng với litespeed api (lsapi) có thêm env biến để xác định max thực hiện thời gian - LSAPI_MAX_PROCESS_TIME (mặc định là 300 giây).

+0

hãy đánh dấu câu trả lời của riêng bạn là được chấp nhận để giúp đỡ người khác. và tôi nghĩ sẽ rất tuyệt nếu bạn thêm môi trường CLI vào thẻ/câu hỏi của mình. –

+0

giá trị mặc định là 300, nhưng được đặt thành 0 không? – horatio

+1

MAX_PROCESS_TIME khác với giới hạn thời gian cài đặt php. Thời gian xử lý tối đa đã được thêm vào bởi công nghệ litespeed để ngăn chặn kịch bản ác mà vòng lặp trong nhiều tháng không làm gì [set_time_limit() là thời gian cpu, không phải thời gian thực]. LSAPI kích hoạt cơ chế timeout php nội bộ, tôi đã báo lại cho công nghệ LiteSpeed. Vì vậy, LSAPI_ * env biến là ưu tiên cao nhất so với giá trị php - nó rất tuyệt vời trên môi trường chia sẻ, người dùng không thể chạy kịch bản trên giới hạn toàn cầu trừ khi anh ta có được tập tin cấu hình LiteSpeed ​​Web Server hoặc truy cập bảng điều khiển web :) – kiler129

0

Hãy thử set_time_limit() và kiểm tra trong phpinfo() nếu bạn có thể thiết lập thời gian giới hạn:

set_time_limit(60*60);phpinfo();exit; 
+0

set_time_limit() doesnt dường như không giúp được gì. Tôi đang chạy script từ giao diện điều khiển trên máy chủ chuyên dụng (I'm root). – kiler129

+0

Giới hạn này không có hiệu lực trong CLI. – Mchl

+0

Tôi không biết rằng ... – Marc

19

Thử đặt max_input_time = -1 trong php.ini hoặc sử dụng set_time_limit(-1). Điều đó làm việc cho tôi mà không cần xây dựng lại PHP.

This article giải thích nó độc đáo.

+3

Làm việc như quyến rũ, tôi đã có cùng một lỗi và thiết lập max_input_time = -1 đã làm việc.Thanks – amertkara

+0

Nó không phải làm việc - LSAPI_ * cài đặt có ưu tiên cao hơn php.ini - admin có thể cung cấp cho người dùng quyền truy cập vào một số tùy chọn của php.ini mà không có rủi ro do hạn chế thực hiện bởi LSAPI. – kiler129

+0

Chỉ muốn thêm rằng nó xuất hiện rằng thiết lập '0' hoặc' -1' sẽ có tác dụng tương tự. Cảm ơn điều này, việc cập nhật 'max_input_time' là cần thiết (bằng cách sử dụng' set_time_limit' trong mã không thay đổi bất cứ điều gì dường như liên quan đến 'max_execution_time' đã được đặt thành' 0' cho tôi). Các thông báo lỗi dường như ouput bất cứ điều gì 'max_execution_time' được thiết lập để mặc dù thực sự của nó' max_input_time' thiết lập được kích hoạt thời gian chờ. PHP 5.5.9 trên ubuntu 14.04 – Programster

0

Tôi đã tìm thấy "thời gian thực thi tối đa 0 giây đã vượt quá" có thể do mã đi vào vòng lặp vô hạn.

Ví dụ:

while (true) { ... } 

nguyên nhân lỗi này đối với tôi.

Nếu nó không phải là một biến môi trường (như đã đề cập trước đó) tôi sẽ xem xét những gì trên số dòng thông báo bằng php với lỗi