2010-02-04 31 views
11

Có thể đặt thời gian thực hiện tối đa là exec($command) không? Đôi khi thực hiện $command của tôi kéo dài quá lâu dừng lại sau 1 phút và trình bày báo lỗi này:Đặt thời gian thực thi tối đa cho exec() cụ thể

Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\files.php on line 51

Làm thế nào tôi có thể làm tăng exec() lệnh thời gian thực hiện tối đa?

if (allow()) { 
    exec($command); 

    if (file_exists($file)) { 
     //exec($makeflv); 
     echo '<script language="javascript" type="text/javascript">window.top.window.aviout(1);</script>'; 

    } else { 
     echo $error; 
     } 

} else { 
    echo $error; 
    } 
+1

Btw, điều này đã được trả lời ít nhất ba lần: http://stackoverflow.com/questions/1176497/limit-execution-time-of-an-function-or-command-php, http://stackoverflow.com/questions/1928249/php-preventing-max- thời gian thực thi-giới hạn-cho-mail và http://stackoverflow.com/questions/21 47567/tránh-php-thực hiện-thời gian giới hạn – Gordon

Trả lời

3

bạn có thể sử dụng ini_set() như thế này:

ini_set('max_execution_time', 0); 

Đặt nó đến 0 sẽ làm cho kịch bản của bạn chạy mãi theo documentation of the ini-directive.

+0

làm thế nào tôi có thể bao gồm ini_set() trong chức năng của tôi? – robert

+0

Chèn đường vào bất cứ nơi nào bạn muốn. Không có ma thuật liên quan. – soulmerge

20

Xem http://php.net/manual/en/function.set-time-limit.php

set_time_limit($seconds) 

Nếu $second được thiết lập để 0, không thời hạn được áp dụng. Lưu ý rằng bạn nên thận trọng với việc loại bỏ giới hạn thời gian hoàn toàn. Bạn không muốn bất kỳ vòng lặp vô hạn từ từ ăn tất cả các tài nguyên máy chủ. Giới hạn cao, ví dụ: 180 là tốt hơn không có giới hạn.

Hoặc, bạn có thể điều chỉnh cài đặt thời gian chỉ cho một số mã nhất định và đặt lại giới hạn thời gian sau khi mã quan trọng đã chạy, ví dụ:

$default = ini_get('max_execution_time'); 
set_time_limit(1000); 
... some long running code here ... 
set_time_limit($default); 
+0

ok tôi đặt set_time_limit (180) trước lệnh exec ($ command); Dường như hoạt động! nhưng sau khi hết hạn, tôi muốn lặp lại lỗi của tôi như thế nào? – robert

+0

Nó sẽ tự ném một lỗi khi hết hạn thời gian. Đó là điều khiến bạn đặt câu hỏi ngay từ đầu. Nếu bạn muốn một trình xử lý lỗi tùy chỉnh, hãy xem http://php.net/manual/en/function.set-error-handler.php – Gordon

+0

có, nhưng khi tôi gửi biểu mẫu, một trang process.php sẽ bắt đầu bằng iframe, tôi chỉ có thể lặp lại điều này: trong đó kết quả là lỗi hoặc thành công! – robert

3

Trong .htaccess bạn có thể thiết lập các giá trị:

php_value max_execution_time 1000000 
php_value max_input_time 1000000 

Bạn cũng có thể thử loại này ở phía trên cùng của kịch bản PHP của bạn:

set_time_limit(0); 
Các vấn đề liên quan