2012-07-01 7 views
8

Tôi đã thử mọi thứ để thay đổi max_execution_time của tập lệnh trình thu thập thông tin php để có thể chạy một khoảng thời gian vô hạn.PHP- không thể thay đổi max_execution_time trong xampp

Tôi đã thay đổi các thiết lập max_execution_time tập tin php.ini để 0 hoặc 100000000 nhưng không có thay đổi

Tôi cũng đã thử thiết lập nó từ kịch bản php bản thân bằng cách sử dụng ini_set('max_execution_time', 0);

Tất cả các kịch bản php ném cùng một lỗi Fatal error: Maximum execution time of 3000 seconds exceeded, tôi có thể bị thiếu gì và làm cách nào để đảm bảo không có giới hạn thời gian thực hiện tối đa?

php script

<?php 
ini_set('MAX_EXECUTION_TIME', -1); 
error_reporting(E_ALL); // turn on all errors, warnings and notices for easier debugging 
//ini_set('max_execution_time', 123456); 
ini_set('max_input_time', -1); 
ini_set('memory_limit', '512M'); 
set_time_limit(0); 
date_default_timezone_set('Europe/London'); 

/*code which scrapes websites*/ 

?> 

phpinfo()

max_execution_time 0 0 
max_input_time  -1 -1 
+1

Bạn khởi động lại apache và PHP sau khi cài đặt một max_execution_time khác nhau trên php.ini ? :) – Mahn

+0

Tôi nghĩ trước tiên bạn nên tối ưu hóa tập lệnh của mình. 3000 giây là một thời gian dài cho một tập tin php. Nếu không, bạn nên chạy tập lệnh của mình trên dòng lệnh. – Stony

+0

Xin lỗi tôi đã xem bóng đá, tôi quên mất điều này khi no1 trả lời. –

Trả lời

3

Bạn không nên để cho bánh xích của bạn chạy dưới apache, nó tốt hơn để chạy nó độc lập qua cli như một phần của thiết lập Gearman.

Bằng cách đó, nó sẽ không làm máy chủ web của bạn chạy và máy chủ đó có thể chạy miễn là bạn muốn. Bạn có thể tìm thấy nhiều ràng buộc cho Gearman mà bạn có thể sử dụng, bao gồm cả PHP của khóa học.

+1

Tôi sẽ cung cấp Đây là một shot nếu tất cả kết thúc tồi tệ, ngay bây giờ im sẽ cố gắng chạy tập tin php trong dấu nhắc lệnh vì nó có thể là một vấn đề trình duyệt, những gì thực sự ổ đĩa tôi hạt là khi một cái gì đó nên làm việc không –

0

Trong WAMP có ba file php.ini, do đó bạn có thể tìm thấy 3 trong xampp cũng có, vì vậy chỉ cần tìm kiếm nó với tìm và thay thế max_execution_time cho những gì bạn đang thiết lập. Nhưng bạn phải giữ một cái gì đó nhỏ không quá lớn như cho nhanh chóng các ứng dụng bạn đang chạy.

+1

Không, tôi đã làm tìm kiếm hệ thống, xammp chỉ có 1 tệp php.ini –

4

thử tắt an toàn chế độ trong php và sau đó thử đoạn code dưới đây

if(!ini_get('safe_mode')){ 
    set_time_limit(0); //this won't work if safe_mode is enabled. 
} 

này sẽ cho phép bạn chạy các kịch bản cho thời gian vô hạn.

Trong Apache bạn có thể thay đổi thời gian thực hiện tối đa bằng .htaccess với dòng này

php_value max_execution_time 200 

set_time_limit() php manual ref.

+0

điều này không hoạt động không may –

+0

@ mk_89 bạn đã tắt chế độ an toàn của php chưa? nếu bạn đã thử cài đặt lại xampp của bạn – LoneWOLFs

+0

Tôi đã tắt nó đi, có lẽ tôi sẽ cài đặt lại nó –

0

Bạn cũng có thể thử đặt ignore_user_abort(TRUE); trong tập lệnh của mình vì nó có thể là thời gian của trình duyệt thay vì tập lệnh.

Từ hướng dẫn php.net

<?php 
// Ignore user aborts and allow the script 
// to run forever 
ignore_user_abort(true); 
set_time_limit(0); 

Xem ở đây để biết thêm

http://www.php.net/manual/en/function.ignore-user-abort.php

+0

OK tôi sẽ cung cấp cho nó một shot –

+0

điều này đã không làm việc –

0

Nếu bạn đang ở trên các cửa sổ, và đây là một CLI chạy script maybe read this.

0

kiểm tra phpinfo() từ tập lệnh tạm thời và tìm kiếm max_execution_time. đảm bảo rằng nó có cùng giá trị với những gì bạn đang thiết lập. mặc định sẽ là 30 giây. cố gắng thay đổi nó thành một vài giá trị khác nhau và khởi động lại apache sau đó kiểm tra giá trị trong phpinfo() để xác nhận.

nếu khi bạn thay đổi giá trị được phản ánh chính xác trong phpinfo() điều đó có nghĩa là có một số mã trong tập lệnh của bạn đang thay đổi giá trị này. tìm kiếm hai điều trong mã của bạn:

  1. tìm kiếm mã của bạn cho ini_set() và kiểm tra xem nó là thay đổi max_execution_time
  2. tìm kiếm set_time_limit()

các chức năng này có thể thay đổi thời hạn tối đa thực hiện từ kịch bản. nếu không bạn nên kiểm tra .htaccess từ nơi có thể đặt giá trị này. nhưng điều này cũng sẽ ảnh hưởng đến phpinfo().

1

sử dụng

set_time_limit(0); 

ở phía trên cùng của kịch bản

+2

tôi đã làm điều này –

0

Tôi tìm thấy sau trong xampp documentation. Có lẽ bạn đang cố chỉnh sửa tệp php.ini sai?

Why have changes in my php.ini no effect?

Since XAMPP 1.7.1 the "php.ini" is only in the directory "\xampp\php". Till XAMPP 1.7.0 is was in the directory "\xampp\apache\bin".

If a change in the "php.ini" have no effect, it's possible PHP is still using an other one. You can verify this with phpinfo(). Go to the URI localhost/xampp/phpinfo.php and search for "Loaded Configuration File". This value shows you the "php.ini" PHP is really using.

Info: After changing the "php.ini" you have to restart Apache, thus Apache/PHP can read the new settings.

+0

Tôi đã kiểm tra phpinfo() trước và những thay đổi tôi đã thực hiện đã được thiết lập –

+0

Được rồi, tôi đã tìm thấy một câu hỏi khác trên [stackoverflow] (http: // stackoverflow. com/questions/4103952/max-value-of-max-input-time) đề cập đến max_input_time. Bạn đã kiểm tra chưa –

+0

Tôi sẽ làm điều đó ngay bây giờ –

0

những gì bạn đang làm chỉ cần đặt max_execution_time thành bất kỳ nội dung nào trong trang của bạn. bạn không thể thay đổi điều này bằng cách sử dụng ini_set. bạn chỉ có thể thay đổi số memory_limit.

see more details here... từ trang web chính thức của php.

nếu bạn muốn thay đổi chúng, hãy thay đổi trong php.ini.

0

Bạn phải thay đổi cả hai vào các bạn php.ini (và kiểm tra xem đó là php.ini ngay bằng cách tìm các vị trí trong phpinfo(); đầu ra!)

max_execution_time = 0 
max_input_time = 0 

Và sau khi kiểm tra rằng nếu một số tập tin php không ghi đè các biến đó cục bộ.

0

mở tập tin notepad php.ini và tìm kiếm hoặc tìm upload_max_filesize = 1000M và bạn nên thay đổi trên Post_max_filesize = 1000M sau đó khởi động xampp của bạn và làm mới phpmyadmin địa phương ..