Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

9 hữu ích PHP chức năng và các tính năng bạn cần biết

by
Difficulty:IntermediateLength:LongLanguages:

Vietnamese (Tiếng Việt) translation by Giang Nam (you can also view the original English article)

Hai lần một tháng, chúng tôi xem xét lại một số các độc giả yêu thích các bài viết từ trong suốt lịch sử của Nettuts +.

Ngay cả sau khi sử dụng PHP trong nhiều năm qua, chúng tôi vấp ngã khi chức năng và các tính năng mà chúng tôi không biết gì về. Một số người trong số này có thể khá hữu ích, nhưng underused. Với ý nghĩ đó, tôi đã biên soạn một danh sách chín PHP chức năng vô cùng hữu ích và tính năng mà bạn nên quen thuộc với.


1. chức năng với số tùy ý của lập luận

Bạn đã biết rằng PHP cho phép bạn xác định các chức năng với đối số tùy chọn. Nhưng đó cũng là một phương pháp cho phép số hoàn toàn tùy ý của chức năng đối số.

Đầu tiên, đây là một ví dụ với các tùy chọn chỉ cần lập luận:

Bây giờ, chúng ta hãy xem làm thế nào chúng ta có thể xây dựng một chức năng chấp nhận bất kỳ số nào của các đối số. Thời gian này chúng tôi sẽ sử dụng func_get_args():


2. sử dụng Glob() để tìm tập tin

Nhiều chức năng PHP có tên dài và mô tả. Tuy nhiên, nó có thể được khó để biết những gì một chức năng đặt tên glob() hiện trừ khi bạn đã quen thuộc với thuật ngữ đó từ những nơi khác.

Hãy suy nghĩ của nó như một phiên bản có khả năng của các chức năng scandir(). Nó có thể cho phép bạn tìm kiếm các tập tin bằng cách sử dụng mẫu.

Bạn có thể lấy nhiều loại tập tin như thế này:

Lưu ý rằng các tập tin có thể thực sự được quay trở lại với một con đường, tùy thuộc vào truy vấn của bạn:

Nếu bạn muốn nhận được đường dẫn đầy đủ để mỗi tập tin, bạn có thể chỉ cần gọi hàm realpath() trên các giá trị trả về:


3. bộ nhớ cách sử dụng thông tin

Bằng cách quan sát sử dụng bộ nhớ của các kịch bản của bạn, bạn có thể tối ưu hóa mã của bạn tốt hơn.

PHP có một bộ thu rác và một người quản lý bộ nhớ khá phức tạp. Số lượng bộ nhớ được sử dụng bởi script của bạn. có thể đi lên và xuống trong thời gian thực hiện một kịch bản. Để sử dụng bộ nhớ hiện tại, chúng tôi có thể sử dụng chức năng memory_get_usage(), và để có được số tiền cao nhất của bộ nhớ được sử dụng tại bất kỳ điểm nào, chúng tôi có thể sử dụng chức năng memory_get_peak_usage().


4. CPU sử dụng thông tin

Đối với điều này, chúng tôi sẽ sử dụng chức năng getrusage(). Hãy nhớ rằng điều này là không có sẵn trên nền tảng Windows.

Đó có thể nhìn một chút khó hiểu trừ khi bạn đã có một nền tảng quản trị hệ thống. Đây là lời giải thích của mỗi giá trị (bạn không cần phải ghi nhớ này):

  • ru_oublock: ngăn chặn các hoạt động đầu ra
  • ru_inblock: ngăn chặn đầu vào hoạt động
  • ru_msgsnd: thư gửi
  • ru_msgrcv: tin nhắn nhận được
  • ru_maxrss: thiết lập cư trú tối đa kích thước
  • ru_ixrss: phân chia sẻ kích thước bộ nhớ
  • ru_idrss: tích phân unshared kích thước dữ liệu
  • ru_minflt: trang đòi
  • ru_majflt: trang lỗi
  • ru_nsignals: tín hiệu nhận được
  • ru_nvcsw: thiết bị chuyển mạch bối cảnh tự nguyện
  • ru_nivcsw: thiết bị chuyển mạch không tự nguyện bối cảnh
  • ru_nswap: giao dịch hoán đổi
  • ru_utime.tv_usec: thời gian người dùng sử dụng (miligiây)
  • ru_utime.tv_sec: thời gian người dùng sử dụng (giây)
  • ru_stime.tv_usec: Hệ thống thời gian sử dụng (miligiây)
  • ru_stime.tv_sec: Hệ thống thời gian sử dụng (giây)

Để xem bao nhiêu sức mạnh CPU kịch bản đã tiêu thụ, chúng ta cần phải nhìn vào 'sử dụng thời gian' và 'thời gian hệ thống' giá trị. Giây và phần miligiây được cung cấp một cách riêng biệt theo mặc định. Bạn có thể chia các giá trị miligiây 1 triệu, và thêm vào giá trị giây để có được những giây tất cả như một số thập phân.

Hãy xem một ví dụ:

Mặc dù kịch bản mất khoảng 3 giây để chạy, sử dụng CPU là rất rất thấp. Bởi vì trong quá trình hoạt động ngủ, kịch bản thực sự không tiêu thụ tài nguyên CPU. Có rất nhiều nhiệm vụ khác, mà có thể mất thời gian thực, nhưng không thể sử dụng thời gian CPU, như chờ đợi cho đĩa hoạt động. Như vậy như bạn thấy, sử dụng CPU và chiều dài thực tế của thời gian là không luôn luôn giống nhau.

Dưới đây là một ví dụ khác:

Mà mất khoảng 1,4 giây của thời gian CPU, hầu như tất cả đều là thời gian người dùng, vì đã có không có cuộc gọi hệ thống.

Thời gian hệ thống là lượng thời gian CPU thực hiện các cuộc gọi hệ thống dành cho hạt nhân trên danh nghĩa của chương trình. Dưới đây là một ví dụ về điều đó:

Bây giờ chúng ta có khá nhiều hệ thống thời gian sử dụng. Điều này là bởi vì các tập lệnh gọi hàm microtime() nhiều lần, mà thực hiện một yêu cầu thông qua hệ điều hành để lấy các thời gian.

Cũng bạn có thể nhận thấy những con số khá không thêm lên đến 3 giây. Điều này là bởi vì có lẽ đã quá trình khác trên máy chủ là tốt, và kịch bản không sử dụng 100% CPU cho suốt thời gian 3 giây.


5. kỳ diệu hằng

PHP cung cấp hữu ích diệu hằng lấy hiện tại số dòng (__LINE__), đường dẫn tệp (__FILE__), đường dẫn thư mục (__DIR__), tên chức năng (__FUNCTION__), tên lớp (__CLASS__), phương pháp tên (__METHOD__) và không gian tên (__NAMESPACE__).

Chúng tôi sẽ không bao gồm mỗi một trong những trong bài viết này, nhưng tôi sẽ chỉ cho bạn một vài trường hợp sử dụng.

Bao gồm các kịch bản khác, đó là một ý tưởng tốt để sử dụng các __FILE__ hằng số (hay cũng __DIR__ thời PHP 5.3):

Sử dụng __LINE__ làm cho gỡ lỗi dễ dàng hơn. Bạn có thể theo dõi xuống số dòng:


6. tạo duy nhất ID

Có thể có những tình huống mà bạn cần để tạo ra một chuỗi duy nhất. Tôi đã thấy nhiều người sử dụng chức năng md5() cho điều này, mặc dù nó có nghĩa là không chính xác cho mục đích này:

Đó là thực sự là một chức năng PHP tên là uniqid() có nghĩa là để được sử dụng cho việc này.

Bạn có thể nhận thấy rằng ngay cả khi các dây duy nhất, họ có vẻ tương tự như đối với một số ký tự đầu tiên. Điều này là bởi vì các chuỗi được tạo ra có liên quan đến máy chủ thời gian. Điều này thực sự có một tác dụng phụ tốt đẹp, như đi kèm mỗi id mới được tạo ra sau đó trong thứ tự chữ cái, do đó, họ có thể được sắp xếp.

Để giảm cơ hội nhận được một bản sao, bạn có thể vượt qua một tiền tố hoặc các tham số thứ hai để tăng dữ liệu ngẫu nhiên:

Chức năng này sẽ tạo ra chuỗi ngắn hơn so với md5(), mà sẽ còn giúp bạn tiết kiệm một số không gian.


7. đăng trên

Bạn đã bao giờ cần thiết để lưu trữ một biến phức tạp trong cơ sở dữ liệu hoặc một tập tin văn bản? Bạn không phải đi lên với một giải pháp ưa thích để chuyển đổi các mảng hoặc đối tượng của bạn thành định dạng chuỗi, như PHP đã có chức năng cho mục đích này.

Hiện có hai phương pháp phổ biến của serializing biến. Dưới đây là một ví dụ có sử dụng các serialize() và unserialize():

Đây là phương pháp nguồn gốc đăng trên PHP. Tuy nhiên, kể từ khi JSON đã trở nên phổ biến trong những năm qua, họ đã quyết định để thêm hỗ trợ cho nó trong PHP 5,2. Bây giờ bạn có thể sử dụng các chức năng cũng như json_encode() và json_decode():

Nó là nhỏ gọn hơn, và tốt nhất của tất cả, tương thích với javascript và nhiều ngôn ngữ khác. Tuy nhiên, các đối tượng phức tạp, một số thông tin có thể bị mất.


8. nén Strings

Khi nói về nén, chúng tôi thường nghĩ về tập tin, chẳng hạn như kho lưu trữ ZIP. Nó có thể nén các dây dài trong PHP, mà không liên quan đến bất kỳ tập tin lưu trữ.

Trong ví dụ sau, chúng tôi sẽ sử dụng gzcompress() và gzuncompress () chức năng:

Chúng tôi đã có thể đạt được giảm kích thước gần 50%. Còn các chức năng gzencode() và gzdecode() đạt được kết quả tương tự, bằng cách sử dụng một thuật toán nén khác nhau.


9. đăng ký chức năng Shutdown

Đó là một chức năng được gọi là register_shutdown_function(), mà sẽ cho phép bạn thực hiện một số mã ngay trước khi kết thúc các tập lệnh đang chạy.

Hãy tưởng tượng rằng bạn muốn chụp một số thống kê điểm chuẩn vào cuối thực hiện kịch bản của bạn, chẳng hạn như mất bao lâu để chạy:

Lúc đầu, điều này có thể có vẻ tầm thường. Bạn chỉ cần thêm mã dưới cùng rất của các kịch bản và nó chạy trước khi nó kết thúc. Tuy nhiên, nếu bạn đã bao giờ gọi các chức năng exit(), mã sẽ không bao giờ chạy. Ngoài ra, nếu có một lỗi nghiêm trọng, hoặc nếu các kịch bản được chấm dứt bởi người dùng (bằng cách nhấn nút dừng trong trình duyệt), một lần nữa nó có thể không chạy.

Khi bạn sử dụng register_shutdown_function(), mã của bạn sẽ thực hiện không có vấn đề tại sao các kịch bản đã ngừng chạy:


Kết luận

Bạn có biết của bất kỳ tính năng PHP nào khác mà không được biết đến rộng rãi, nhưng có thể khá hữu ích không? Xin vui lòng chia sẻ với chúng tôi trong các ý kiến. Và cảm ơn bạn đọc!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.