2013-03-09 42 views
7

tôi đang làm việc trên một dự án không quá lớn (3 bó tôi tạo ra và 6 tôi tải/5 Entities) và tôi đã đặt mã này trên bộ điều khiển nhà tôi:Symfony2 thời gian tải và hiệu suất

class HomeController extends Controller 
{ 
    public function indexAction() 
    { 
     $time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"]; 
     echo $time; 
     die(); 

     //... 

Nó đem lại cho tôi dưới 100ms trên máy chủ cục bộ (đã bật APC), điều này vẫn ổn.

Sự cố thực là hành vi trên máy chủ trực tuyến (sử dụng prov env và APC chưa được cài đặt): Nếu tôi không sử dụng trang web trong 10 phút, lần đầu tiên tải xuống chậm (2 đến 4 giây) và sau đó nếu tôi ở lại trên trang web, nếu tôi làm mới trang, nó là cách nhanh hơn (từ 500ms đến 1s).

Điều đó có bình thường không? Có vấn đề gì với máy chủ trực tuyến của tôi hay dự án symfony2 của tôi?

+3

Có thể là một cảnh quay dài, nhưng bạn có bật xdebug không? Nó có tác động rất lớn đến hiệu suất. – gilden

+0

Tôi không. Nhưng trước khi thử bất cứ điều gì như thế, tôi muốn biết liệu những giá trị này có bình thường hay không? – httpete

+2

Họ chắc chắn là không bình thường, nếu bạn đang chạy trên phần cứng phong nha và môi trường là sản. – gilden

Trả lời

2

Bạn nên thiết lập chắc chắn APC để giảm thời gian tải. Dưới đây là một ghi chú trên đó:

Performance

(2015 chỉnh sửa: liên kết được cập nhật)

+0

Vì có một sự khác biệt khá lớn giữa phiên bản nội bộ và trực tuyến, bạn có nghĩ rằng nó đến từ cấu hình symfony2 của tôi, kết nối cơ sở dữ liệu của tôi ... và không thực thi PHP? – httpete

+0

Phụ thuộc vào phiên bản PHP bạn sử dụng trên máy tính cục bộ/từ xa và hệ điều hành. – apoq

+0

Tôi đã thử chạy dự án trên MAC của tôi với MAMP và APC được kích hoạt (tôi cũng đã thử xCache) ... và tôi nhận được ~ 30ms thay vì ~ 300ms! Điều này là đáng ngạc nhiên nhanh hơn, cảm ơn! Nhưng ... vì tôi không thể kích hoạt APC trên máy chủ trực tuyến của mình, tôi vẫn đang tìm cách cải thiện điều đó. – httpete

2

Chỉ cần có một cái nhìn tại tab timeline của thanh công cụ tuyệt vời/profiler mà Symfony cung cấp: http://symfony.com/blog/new-in-symfony-2-2-new-stopwatch-component (không giới hạn đến 2.2)

Bạn đang sử dụng localhost làm database_host? Nếu vậy, hãy thử 127.0.0.1 thay thế!

Bạn có đang truy cập API của bên thứ ba như Facebook (FOSUserBundle) không?

+0

Tôi đang sử dụng Symfony v2.0.9 để tôi có thể cài đặt thành phần? Tôi đang sử dụng 127.0.0.1 và FOSUserBundle. – httpete

+0

Thanh công cụ chắc chắn có sẵn cho 2.0.9: https://github.com/symfony/symfony-standard/blob/v2.0.9/app/config/config_dev.yml # L9 Bạn cập nhật phiên bản Symfony của mình như thế nào? Thực hiện bất kỳ tiến bộ nào về thời gian hiển thị? – hacfi

+0

Tôi đã cài đặt thành phần Đồng hồ bấm giờ bằng cách sử dụng trình soạn thảo nhưng không có gì mới trong sơ đồ trang web của tôi ... Nếu tôi làm cho nó hoạt động, nó có thể cung cấp thông tin trước khi thực hiện bộ điều khiển đầu tiên không? (cf câu hỏi mã của tôi) – httpete

Các vấn đề liên quan