0

Hướng dẫn tăng tốc Composer PHP

Tôi làm việc với cả PHP và NodeJS với rất rất nhiều dự án lẻ tẻ cần liên tục update các package. Và thực sự tôi thấy phải có cách gì đó tăng tốc Composer PHP vì mỗi lần chạy composer update với npm update là cảm giác cứ như một ông già chạy thi marathon với một thằng nhóc cơ bắp 18 tuổi. Đồng ý là PHP chạy chậm hơn JS, nhưng mức độ chậm của Composer là không thể chấp nhận được.

Sau khi tìm hiểu thì mình thấy có hai lý do chính khiến cho PHP Composer thảm hại, và hai cách để cải thiện là:

Không sử dụng Xdebug

Vâng! Hẳn là dev PHP thì nhiều bạn không thể xa rời Xdebug được. Không có nó thì không thể nào trace theo dòng xử lý của PHP được. Thế nhưng tôi nhận ra đã từ lâu lắm rồi tôi không dùng Xdebug. Chỉ trừ khi mới vào nghề, còn bây giờ tôi “đoán” và dùng var_dump và print_r.  Thế tại sao lại phải để Xdebug tồn tại và chiếm tài nguyên của PHP Interpreter, chỉ để log lại những lỗi lầm do tôi gây nên =]] Tăng tốc Composer là tối thượng!

Tìm mở file php.ini

Sửa không cho Xdebug tự động chạy và lưu lại dữ liệu

Tiếp đến là không để PHP tải thêm phần mở rộng Xdebug vào luôn. Tìm dòng zend_extension có liên quan Xdebug thì thêm dấu ; ngay đầu câu:

 

Dùng Prestissimo

Vấn đề chính của PHP là hầu như nó chạy chương trình theo hướng tuần tự. Không thể nào chạy asynchronous như JS (ngoại trừ PHP7).  Rõ ràng, việc chạy tuần tự như vậy làm nó chậm hơn nhiều nhiều so với JS. Tuy nhiên đã có giải pháp cho vấn đề này.

Prestissimo là một gói bổ sung global cho Composer, sẽ giúp chạy song song việc cài đặt các gói thư viện. Prestissimo nhanh một cách điên rồ đó mấy bạn. Mặc dù có thể Prestissimo có thể không hoạt động nếu bạng dùng mạng có firewall hoặc proxy, do nó xài cURL.

Khi mình cài đặt Prestissimo vào thì trước đây tốn cả 4 phút, giờ chỉ còn có 10 giây để chạy composer update

Sure! Thử ngay đi, đã lắm! Cài đặt Prestissimo bằng lệnh:

Cài xong rồi thì quên nó đi và tận hưởng tốc độ!

 

 

Bình luận với Facebook

Hoàng Tựa

Yêu thích lập trình web và tạo ra những thứ đẹp đẽ.

Leave a Reply

Your email address will not be published. Required fields are marked *