Một số thủ thuật tối ưu khi lập trình PHP

Thảo luận trong 'ACM/Programming' bắt đầu bởi hackerkinhcan_lha, 29/06/13, 06:06 PM.

  1. hackerkinhcan_lha

    hackerkinhcan_lha W-------

    Tham gia: 29/06/13, 06:06 PM
    Bài viết: 21
    Đã được thích: 0
    Điểm thành tích:
    16
    Tối ưu và tăng tốc xử lý khi lập trình PHP không chỉ giúp website chạy ổn định mà còn giúp tiết kiệm tài nguyên xử lý của máy chủ website.
    Khi học và làm việc với PHP lần đầu, đa phần các lập trình viên đều có xu hướng học lướt các kiến thức căn bản để tập trung vào phần viết ứng dụng. Cũng chính vì lý do đó mà phần lớn những điểm nhấn quan trọng trong PHP thường là sẽ bị bỏ qua.

    [​IMG]

    Bài viết này, với mong muốn tổng hợp và đưa đến cái nhìn bao quát, đầy đủ trong lập trình PHP. Qua đó giúp các bạn có cái nhìn đầy đủ và hiểu sâu các vấn đề hơn.

    1- Khi echo thay thế print:
    Echo luôn luôn hoạt động nhanh hơn print, vì echo không có return gì cả, trong khi print thì luôn return true hay false ( 0 | 1)
    PHP:


    2- Nháy đơn luôn nhanh hơn nháy kép:

    Xét ví dụ sau:
    PHP:
    Vì nháy kép luôn kiểm tra nội dung bên trong có cái nào là biến hay không. Trong khi nháy đơn thì không kiểm tra, vì nội dung bên trong nháy đơn chắc chắn là chuỗi.

    3- Vòng lặp for trong PHP
    Mỗi khi thực hiện vòng lặp for() để duyệt một phần tử mảng. Ta thường sử dụng hàm count để đếm số lượng của các phần tử trong mảng. Điều này sẽ làm cho ứng dụng của chúng ta trở nên chậm chạp. Vì lý do mỗi lần thực hiện việc kiểm tra điều kiền thì ta lại phải gọi lại hàm count để đếm số phần tử trong mảng.
    Cụ thể:
    PHP:
    Cải tiến:
    PHP:


    4- Đừng back folder khi gọi lại file:

    Thói quen back folder của một số lập trình viên cần phải xem xét lại vì. Khi back folder. Hệ thống phải cần thời gian tìm kiếm và định hình đường dẫn. Điều đó sẽ làm cho ứng dụng tốn tài nguyên trong việc thực hiện thao tác này.
    Cụ thể:
    PHP:
    Cải tiến:
    PHP:
    BASE là 1 hằng được định nghĩa từ đầu để chỉ ra đường dẫn vật lý tới thư mục của ứng dụng.

    5- Nối chuỗi bằng dấu "," sẽ nhanh hơn dấu "."
    Thói quen khi lập trình PHP thường là nối chuỗi và biến bằng dấu "." .Nhưng thực tế là khi nối chuỗi bằng dấu "," thì tốc độ xử lý của ứng dụng sẽ được cải tiến và nhanh hơn rất nhiều.
    PHP:


    6- Luôn dùng dấu nháy để truy cập khóa của 1 mảng:

    Thực tế là các lập trình viên hay bỏ qua điều này vì sự rườm rà của cách viết. Nhưng nếu không có nó thì ứng dụng sẽ lại chậm đi một chút. Vì khi đó nó sẽ xem khóa đó là 1 hằng, và tìm xem có hằng nào định nghĩa hay ko? như vậy sẽ làm code chạy chậm đi do phải mất thời gian xử lý tác vụ biên dịch hằng.
    Ví dụ:
    PHP:
    Trên đây là một số thủ thuật dành cho các bạn học tập và thích tìm hiểu về lập trình PHP
    Chúc các bạn thành công
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. rua_naruto

    rua_naruto W-------

    Tham gia: 29/06/13, 08:06 PM
    Bài viết: 2
    Đã được thích: 0
    Điểm thành tích:
    1
    Bài viết hay quá, mà chưa có nút thank ^^!. Rất ủng hộ tinh thần của tác giả
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. hackerkinhcan_lha

    hackerkinhcan_lha W-------

    Tham gia: 29/06/13, 06:06 PM
    Bài viết: 21
    Đã được thích: 0
    Điểm thành tích:
    16
    Hi ! Cảm ơn bạn ủng hộ :)
    Hy vọng sẽ được trao đổi với các bạn về lập trình web và bảo mật trong lập trình web :)
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  4. Black Hat

    Black Hat W-------

    Tham gia: 29/06/13, 09:06 PM
    Bài viết: 16
    Đã được thích: 0
    Điểm thành tích:
    16
    Hi vọng bạn sẽ tiếp tục chia sẽ nhiều bài viết hay như vậy ^^
    Nhưng mà mục 5 đúng của nó thì phải là in ra nhanh hơn, chứ không phải nối nhanh hơn.
    Với echo $a,$b,$c; thì nó sẽ in liên tiếp các biến $a,$b,$c nên cho tốc độ nhanh. Còn echo $a.$b.$c; thì bước đầu tiên server sẽ nối $a,$b,$c lại thành 1 chuỗi rồi mới in ra nên sẽ lâu hơn.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  5. Vũ Thành Trung

    Vũ Thành Trung W-------

    Tham gia: 09/07/13, 05:07 PM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    Hay thank bạn
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  6. Nguyễn Thái

    Nguyễn Thái W-------

    Tham gia: 14/07/13, 08:07 AM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    Thanks nhìu nhé!
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  7. ndkhanh157

    ndkhanh157 W-------

    Tham gia: 17/07/13, 08:07 AM
    Bài viết: 7
    Đã được thích: 0
    Điểm thành tích:
    6
    Bài viết khá chất lượng, thanks nhiều
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  8. thaoly256

    thaoly256 Banned

    Tham gia: 07/09/13, 08:09 PM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    www.xinadj.com/2013/05/phim-hanh-ong-tay-trom-chuyen-nghiep.html]phim hành động[/url]
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  9. hoanghoan

    hoanghoan W-------

    Tham gia: 25/09/13, 06:09 AM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    bài viết hay thật :) cảm ơn chủ thớt nhé
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  10. e gà lắm

    e gà lắm W-------

    Tham gia: 21/10/13, 12:10 PM
    Bài viết: 18
    Đã được thích: 0
    Điểm thành tích:
    16
    Mấy bác hướng dẫn e thêm được không ạ
    Có vài chỗ e không hiểu ạ :D
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  11. trunnguyen

    trunnguyen Banned

    Tham gia: 23/10/13, 09:10 AM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    Công ty chúng tôi trực thuộc công ty Ds-Brand của Nhật
    Hiện đang có nhu cầu sử dụng 1 số công ty sales VN
    để bán phần mềm Oricoh Blog- sản phẩm tạo website (sản phẩm của Nhật).
    Dưới đây là thông tin về sản phẩm:
    + Giới thiệu sản phẩm: http://magingam.net/
    + Công ty mẹ ở Nhật Bản: http://ds-b.jp
    + Giá cả và chương trình khuyến mại: http://magingam.net/campaign/ (Giá hiện nay đang là 500 đô/1 license/ 1năm)
    + 1 số trang của khách hàng Nhật đã dùng sản phẩm để tạo trang chủ của họ
    ( hiện có hơn 8000 cty Nhật đang dùng, mới bắt đầu triển khai ở Thái và Việt Nam)
    http://koujiya.jp/
    http://katagirijuku.com/
    http://www.keishin.or.jp/
    http://www.misato-mark.co.jp/
    http://www.akitasilicon.co.jp/

    Các công ty sales sẽ thu được ít nhất 20% số tiền bán được/ 1 license
    (20% của 500 đô)
    Ngoài ra chúng tôi có dành riêng thêm 1 mức giá với khách hàng nào chỉ xây dựng trên 1 ngôn ngữ là tiếng Việt: 250 U$/năm
    Mức triết khấu giữ nguyên 20%
    Rất mong nhận được sự lưu tâm của các cá nhân và quý công ty.

    "BẠN CÓ KHÁCH HÀNG CHÚNG TÔI CÓ SẢN PHẨM. BẠN ĐÃ NGHE NHIỀU VÀ BIẾT ĐẾN CHẤT LƯỢNG SẢN PHẨM NHẬT
    HÃY LIÊN HỆ VỚI CHÚNG TÔI ĐỂ BIẾT THÊM CHI TIẾT."
    Hot line: 01234 998 868 (Mr.Nghị - VN) : 0128 7382 225 (Mr.Ataka - JP)
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  12. hackerkinhcan_lha

    hackerkinhcan_lha W-------

    Tham gia: 29/06/13, 06:06 PM
    Bài viết: 21
    Đã được thích: 0
    Điểm thành tích:
    16
    Chỗ nào vậy bạn ơi :D
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  13. Fuck

    Fuck Banned

    Tham gia: 30/10/13, 08:10 AM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    Bài viết hay, tks bạn.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  14. AnhTút

    AnhTút W-------

    Tham gia: 03/11/13, 08:11 PM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    Cám ơn bài viết đã nêu ra một số thủ thuật. Ở đây mình xin góp ý một chút xíu
    Khi bạn học điều gì đó bằng thủ thuật thì đừng quên rằng đằng sau nó là một nguyên lý, một logic, ít nhất là với Lập trình - tất cả đều hệ thống, và tồn tại thì phải có ý nghĩa.
    1. Hãy xét đến tác dụng & Sự linh hoạt
    Cả echo [SUB]ngôn ngữ php [/SUB] và print [SUB]ngôn ngữ php [/SUB]là phần tử kiến trúc ngôn ngữ, không thực sự là một hàm. printreturn (luôn luôn là boolean(true) - 1 chứ không phải như bạn nói) còn echo thì không. Điều này khiến print "chậm" hơn echo. Nhưng chả đáng là bao. Khẳng định 99,99% sự "chậm hơn" này vô nghĩa. Cái có nghĩa hơn ở đây là bạn xem xét trường hợp nào nên sử dụng cái nào.
    Xét 2 file print.php có nội dung print 'exp'; và file echo.php với echo 'exp'; đánh giá ops file print.php: 4 file echo.php: 3. Thấy được số operation chênh nhau. Nhưng thực sự phải nói lại là nó vô nghĩa vì chả đáng là bao. Nếu nói là cả nghìn dòng code thì sẽ đáng nhưng tôi khẳng định không ai lập trình chuyên nghiệp lại đi "chọn" chỉ một trong hai cái trên để code. Tùy trường hợp hoàn cảnh. Biết đâu có lúc lại cần kiểm tra xem một lệnh output có được thực hiện thành công không.
    Có một điều echo không làm được như sau: $b ? echo "true" : echo "false"; không hợp lệ nhưng print thì đúng. Nhưng tôi hay dùng thế này hơn: echo $b ? "true" : "false";
    2. Không phải nhanh hơn là nhanh hơn!
    Nháy đơn luôn nhanh hơn nháy kép cho trường hợp string không có biến. Ngược lại thì nháy kép nhanh hơn. Không ai bắt buộc nhưng nếu string nhiều biến quá mà cứ nối bằng "." hay "," thì cũng không phải thượng sách.
    3. Typing
    Nếu muốn nói đến nhanh chậm thì tôi cũng liệt kê một số nhỏ để cải thiện typing (performance không xét)
    Bỏ qua lỗi: @
    echo rút gọn:
    if rút gọn (Ternary Operator): ?:;
    ...
    Chú ý config short_open_tag
    Bài viết có sử dụng một số tiếng Anh xen lẫn vì mình cảm thấy bất tiện khi dịch nó sang tiếng Việt.
     
    Last edited by a moderator: 04/11/13, 11:11 AM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  15. Hackerpro536

    Hackerpro536 W-------

    Tham gia: 31/10/13, 12:10 AM
    Bài viết: 62
    Đã được thích: 0
    Điểm thành tích:
    16
    Dân cntt chẳn lẻ đọc kg hiểu àk
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan