PHP hoạt động như thế nào?

Hầu hết chúng ta đều quen thuộc với cách thức hoạt động của một ứng dụng web. Chúng tôi biết rằng khi chúng tôi nhập một URL trong trình duyệt của mình, nó sẽ liên hệ với máy chủ web sẽ trả lại một số HTML. Sau đó, trình duyệt sẽ thực hiện các yêu cầu tiếp theo và sau đó hiển thị trang web. (Đây là sự đơn giản hóa. Nhưng đó là ý chính. )

Nhưng điều gì đang xảy ra trên máy chủ web trả về HTML?

Đây không phải là điều mà hầu hết chúng ta đều biết cách trả lời. Chúng tôi biết (hoặc ít nhất nên biết. ) cách xây dựng một trang web PHP. Nhưng điều gì xảy ra giữa mã PHP của chúng tôi và trình duyệt là một điều bí ẩn

Có một cơ hội tốt mà bạn đang nghĩ, “Chà, trang web của tôi đang tải. Tại sao tôi phải suy nghĩ kỹ về điều này?” . Nhưng sự thật là biết cách ứng dụng PHP hoạt động có thể hữu ích

Nó có thể ảnh hưởng đến cách bạn thiết kế ứng dụng PHP của mình. Nhưng nó cũng quan trọng nếu bạn đang tìm cách cải thiện hiệu suất của nó. Ví dụ: thật khó để hiểu bộ nhớ đệm ứng dụng PHP nếu bạn không hiểu ứng dụng PHP hoạt động như thế nào

Vòng đời của một yêu cầu PHP

Nếu bạn đến từ một ngôn ngữ được biên dịch (như Java hoặc C#), thì điều quan trọng nhất cần hiểu là PHP không phải là một. Đó là một ngôn ngữ được giải thích. Điều này có nghĩa là PHP sẽ cần diễn giải và biên dịch mã ứng dụng của bạn cho mỗi yêu cầu được gửi tới nó

Bây giờ, bạn có thể sử dụng bộ nhớ đệm và các tối ưu hóa khác để tăng tốc quá trình này. Nhưng bản chất cách thức hoạt động của các yêu cầu đối với ứng dụng PHP của bạn sẽ không thay đổi. Họ sẽ luôn trông như thế này

PHP hoạt động như thế nào?

Như bạn có thể thấy trong sơ đồ trên, chúng tôi luôn bắt đầu với một trình duyệt yêu cầu một trang web. Yêu cầu này sẽ tấn công máy chủ web. Sau đó, máy chủ web sẽ phân tích nó và xác định phải làm gì với nó

Nếu máy chủ web xác định rằng yêu cầu dành cho tệp PHP (thường là index.php), nó sẽ chuyển tệp đó tới trình thông dịch PHP. Trình thông dịch PHP sẽ đọc tệp PHP, phân tích cú pháp tệp đó (và các tệp được bao gồm khác) rồi thực thi tệp đó. Khi trình thông dịch PHP thực thi xong tệp PHP, nó sẽ trả về một đầu ra. Máy chủ web sẽ lấy đầu ra đó và gửi lại dưới dạng phản hồi cho trình duyệt

Một ứng dụng PHP chỉ là một tập lệnh

Đây là mục tiêu giải thích vòng đời của một yêu cầu PHP là để có được tuyên bố này. Đây là sự thật đằng sau bất kỳ ứng dụng PHP nào cho dù đó là ứng dụng Laravel hay Symfony. (Hoặc thậm chí là một CMS như Drupal hoặc WordPress. ) Tất cả chúng chẳng là gì khác ngoài các tập lệnh giống như tập lệnh shell

Trong trường hợp này, máy chủ web không gì khác hơn là một trung gian. Mỗi khi ai đó yêu cầu một trang PHP, nó chỉ yêu cầu máy chủ web chạy một tập lệnh PHP cụ thể. Nếu tập lệnh PHP trả về bất kỳ đầu ra nào, máy chủ web sẽ gửi lại

Điều này khác với những gì bạn sẽ thấy với các ngôn ngữ lập trình web khác. Những ngôn ngữ lập trình web này tạo ra cái mà chúng ta sẽ gọi là các ứng dụng web truyền thống hơn. Các ứng dụng web truyền thống này thường hoạt động bằng máy chủ ứng dụng. Một số máy chủ ứng dụng nổi tiếng là Tomcat cho Java, IIS cho. NET, Gunicorn cho Python, Unicorn cho Ruby

Làm việc với một máy chủ ứng dụng khác theo một số cách cơ bản. Điều quan trọng nhất là một ứng dụng web truyền thống nằm trong máy chủ ứng dụng. Đó không phải là tập lệnh mà máy chủ web của bạn có thể gọi. Trên thực tế, các máy chủ ứng dụng này cũng hoạt động như máy chủ web. Sơ đồ dưới đây sẽ giúp bạn hình dung điều này

PHP hoạt động như thế nào?

Như bạn có thể thấy, ứng dụng web nằm bên trong máy chủ ứng dụng. (Thậm chí có thể có nhiều ứng dụng web trên mỗi máy chủ ứng dụng. ) Máy chủ ứng dụng này cũng là máy chủ web của bạn. Bất kỳ yêu cầu nào bạn thực hiện đối với nó cũng giống như yêu cầu đối với ứng dụng web. Nó không phải là một trung gian như với PHP

động lực học khác nhau

Sự khác biệt cơ bản này giữa ứng dụng PHP và ứng dụng web truyền thống hơn là rất quan trọng. Nó thay đổi rất nhiều động lực xung quanh họ. Ví dụ: đây là lý do tại sao bạn có thể chỉnh sửa bất kỳ tệp PHP nào trên máy chủ và thấy các thay đổi ngay lập tức. (Chà, đó là trừ khi bạn có một số giải pháp lưu trữ tại chỗ. )

Nhưng bạn không thể nói như vậy về các ứng dụng web truyền thống. Các ứng dụng này thường chỉ cho phép bạn chỉnh sửa nhanh các tệp mẫu. Bất kỳ thay đổi nào khác sẽ yêu cầu bạn khởi động lại máy chủ ứng dụng ở mức tối thiểu. (Mọi thứ trở nên phức tạp hơn nếu bạn sử dụng ngôn ngữ được biên dịch. )

Điều đó nói rằng, đây không phải là sự khác biệt duy nhất giữa ứng dụng PHP và ứng dụng truyền thống. Có những khác biệt khác rất quan trọng để biết. Vì vậy, hãy nhìn vào một số trong số họ

Quản lý bộ nhớ

Hãy bắt đầu với quản lý bộ nhớ. Làm cách nào để chúng tôi quản lý bộ nhớ khi chúng tôi đang làm việc với ứng dụng PHP?

Chúng tôi chỉ làm điều gì đó nếu PHP báo lỗi hết bộ nhớ. Và thường thì chúng ta sẽ chỉ tăng giới hạn bộ nhớ của PHP khi gặp lỗi đó. Sau đó, chúng tôi sẽ tiếp tục và tiếp tục làm bất cứ điều gì chúng tôi đang làm trước khi chúng tôi thấy lỗi

Nếu bạn tập trung vào hiệu suất hơn, bạn sẽ cố gắng giảm mức sử dụng bộ nhớ cho mã của mình. Ví dụ: giả sử bạn sắp hết bộ nhớ lưu trữ một tệp XML lớn trong bộ nhớ bằng SimpleXML. Thay vào đó, bạn có thể chuyển sang XMLReader để duyệt qua tệp XML

Rò rỉ bộ nhớ

Bạn đã bao giờ gặp lỗi rò rỉ bộ nhớ với PHP chưa? . Chúng xảy ra khi bạn lưu giữ dữ liệu trong bộ nhớ và bộ nhớ đó không bao giờ bị xóa sau khi bạn xử lý xong dữ liệu

Điều đó nói rằng, rò rỉ bộ nhớ là khá hiếm với các ứng dụng PHP. Đó là bởi vì PHP là một tập lệnh chạy rồi kết thúc. Sau khi kết thúc, PHP sẽ xóa tất cả bộ nhớ được sử dụng bởi tập lệnh. Đặt lại bộ nhớ theo cách đó sẽ ngăn hầu hết các ứng dụng PHP bị rò rỉ bộ nhớ

Nhưng đây không phải là trường hợp của một ứng dụng web truyền thống hơn. Vì ứng dụng là một phần của máy chủ web nên nó chỉ kết thúc khi bạn khởi động lại chính máy chủ web. Điều này không (hoặc không nên. ) xảy ra rất thường xuyên. Điều này có nghĩa là rò rỉ bộ nhớ là một thực tế phổ biến với các loại ứng dụng đó

Rò rỉ bộ nhớ có hậu quả thực sự với một ứng dụng web truyền thống hơn. Nếu bạn không khởi động lại máy chủ ứng dụng của mình, máy chủ của bạn sẽ hết bộ nhớ vào một lúc nào đó. Khi điều đó xảy ra, máy chủ ứng dụng sẽ gặp sự cố mang theo ứng dụng web của bạn

kiên trì dữ liệu

Vì vậy, chúng tôi khá rõ ràng về rò rỉ bộ nhớ là gì và tại sao PHP không gặp phải vấn đề đó nhiều. Nhưng đây cũng không phải là khía cạnh duy nhất của quản lý bộ nhớ trong PHP. PHP cũng không có bất kỳ cách tích hợp nào để duy trì dữ liệu trong bộ nhớ

Trên thực tế, một phần lý do tại sao có ít rò rỉ bộ nhớ trong PHP là do khía cạnh quản lý bộ nhớ này trong PHP. Hãy tưởng tượng rằng chúng ta có hai yêu cầu giống hệt nhau cho ứng dụng PHP của mình. Cái đầu tiên chạy qua tập lệnh PHP của chúng tôi và lưu trữ dữ liệu trong bộ nhớ trong quá trình này. Không có dữ liệu nào trong số đó sẽ có sẵn cho yêu cầu thứ hai

Điều này liên quan đến những gì chúng tôi đã giải thích về tập lệnh PHP trước đó. Khi PHP hoàn thành việc thực thi một tập lệnh, hệ điều hành sẽ xóa bộ nhớ mà nó đã sử dụng. Điều này có nghĩa là PHP không thể chia sẻ dữ liệu giữa các yêu cầu bằng cách sử dụng bộ nhớ như một ứng dụng web truyền thống sẽ làm.

Thay vào đó, PHP phụ thuộc vào các hệ thống khác để chia sẻ dữ liệu giữa các yêu cầu. Bạn có thể sử dụng các phiên mà chính chúng sử dụng phương thức lưu trữ. Phương thức lưu trữ có thể là tệp, kho lưu trữ dữ liệu hoặc thậm chí là cơ sở dữ liệu

Một ứng dụng PHP có xu hướng sử dụng một hoặc nhiều phương thức lưu trữ này. Những cái bạn sử dụng tùy thuộc vào những gì ứng dụng của bạn hỗ trợ và nhu cầu của bạn. Tuy nhiên, nếu bạn phải chọn một, sử dụng kho lưu trữ dữ liệu như Redis hoặc Memcached có xu hướng là tùy chọn phổ biến nhất

đồng thời

Đồng thời là một khái niệm khác rất quan trọng để hiểu với các ứng dụng PHP. đồng thời là gì? . Sau đó, bạn có thể thực hiện các phần nhỏ hơn này cùng một lúc hoặc theo một thứ tự khác mà không bị hỏng

Bây giờ, giải thích như thế này, đồng thời không thực sự có ý nghĩa với các ứng dụng PHP. PHP không chia nhỏ ứng dụng của chúng ta thành các phần nhỏ hơn và chạy chúng cùng một lúc. Điều đó nói rằng, đồng thời vẫn được áp dụng do cách PHP xử lý nhiều yêu cầu cho một ứng dụng

Như chúng ta đã thấy cho đến nay, mỗi yêu cầu được thực hiện cho một ứng dụng PHP là độc lập với ứng dụng khác. Máy chủ web sẽ chuyển yêu cầu tới trình thông dịch PHP, người sẽ chạy tập lệnh của ứng dụng PHP của chúng tôi. Điều này có nghĩa là trình thông dịch PHP xử lý nhiều tập lệnh cùng một lúc là điều rất phổ biến.

PHP hoạt động như thế nào?

Dòng thời gian ở trên cố gắng làm nổi bật điều này bằng dòng thời gian. Chúng tôi có ba quy trình đồng thời của tập lệnh PHP. Chúng bắt đầu và kết thúc vào những thời điểm khác nhau, nhưng một số quá trình thực thi của chúng trùng lặp

Đây là lý do tại sao bạn nên ghi nhớ đồng thời khi làm việc với ứng dụng PHP. Và đồng thời như quản lý bộ nhớ có nhiều hàm ý với PHP. Điều đó nói rằng, chúng không phải là thứ mà bạn phải nghĩ đến mọi lúc. (Nhưng thật tốt khi biết về chúng. )

đa nhiệm

Hãy bắt đầu với đa nhiệm. Đa nhiệm là ý tưởng cho rằng bạn có thể thực hiện một loạt tác vụ trên máy tính nhanh hơn nếu bạn thực hiện chúng cùng một lúc. Các ứng dụng PHP dựa rất nhiều vào khái niệm này để thực hiện các tác vụ tính toán chuyên sâu

Đó là bởi vì nó khá dễ dàng để triển khai đa nhiệm trong PHP. Như chúng ta đã thấy, trình thông dịch PHP có thể xử lý nhiều tập lệnh cùng một lúc. Vì vậy, đa nhiệm bắt nguồn từ việc tạo yêu cầu cho các nhiệm vụ bổ sung này mà chúng ta cần thực hiện

PHP hoạt động như thế nào?

Cái này hoạt động ra sao? . Yêu cầu ban đầu này sẽ khiến ứng dụng PHP tạo ra các yêu cầu con khác cho chính nó. Các yêu cầu phụ khác này là các tác vụ ứng dụng mới của chúng tôi. Chúng chạy cùng lúc với yêu cầu ban đầu của chúng tôi

Cần chỉ ra rằng những yêu cầu này thường được gửi không đồng bộ. Chúng không có tác động lớn đến thời gian thực thi của tập lệnh PHP. Điều này có nghĩa là chúng không làm chậm quá trình thực thi ứng dụng PHP trong yêu cầu ban đầu

Một ví dụ điển hình về đa nhiệm trong các ứng dụng PHP là cách các CMS PHP phổ biến xử lý các công việc định kỳ. Trong một CMS, một công việc định kỳ là một tác vụ mà bạn đã lên lịch (như xuất bản một bài đăng trong tương lai) trong tương lai mà bạn cần CMS của mình xử lý. CMS xử lý các công việc định kỳ này bằng cách tạo yêu cầu cho một URL cụ thể bất cứ khi nào bạn gửi yêu cầu tới CMS

Đói tài nguyên

Nhưng đồng thời cũng không phải là không có vấn đề. Một trong những phổ biến nhất là nạn đói tài nguyên có nghĩa chính xác như tên gợi ý. Nó đề cập đến các quy trình PHP đồng thời của bạn không có tài nguyên mà chúng cần để chạy tốt (hoặc không có)

Cần chỉ ra rằng rò rỉ bộ nhớ mà chúng ta đã thấy trước đó là một dạng cạn kiệt tài nguyên. Rò rỉ bộ nhớ ngày càng tăng khiến bộ nhớ của máy chủ bị bỏ đói cho đến khi ứng dụng ngừng hoạt động. Tuy nhiên, vì các ứng dụng PHP không bị rò rỉ bộ nhớ nên đây không phải là nguyên nhân gây ra sự cố

Hãy tưởng tượng rằng máy chủ của bạn có 300 megabyte bộ nhớ trống. Và ứng dụng PHP của bạn chiếm trung bình 50 megabyte bộ nhớ trong quá trình thực thi. Điều này có nghĩa là, theo lý thuyết, máy chủ của bạn chỉ có thể xử lý sáu lần thực thi đồng thời

Vậy điều gì sẽ xảy ra nếu máy chủ của bạn cần xử lý nhiều hơn sáu tập lệnh cùng một lúc? . Nó chỉ có thể chậm lại hoặc nó có thể chết hoàn toàn. (Đó là ý tưởng đằng sau hầu hết các cuộc tấn công từ chối dịch vụ. )

Đây là lý do tại sao thiếu tài nguyên không phải là vấn đề quá lớn với ứng dụng PHP của bạn. Có, bạn có thể giảm mức sử dụng bộ nhớ. Và kết quả là bạn có thể có nhiều lần thực thi ứng dụng PHP đồng thời hơn

Nhưng sẽ tốt hơn nếu định cấu hình máy chủ của bạn để nó không bao giờ cố gắng thực hiện quá nhiều lần thực thi đồng thời. Đó là lý do tại sao đây là cài đặt cấu hình quan trọng cho máy chủ ứng dụng PHP. Thiếu tài nguyên là vấn đề về cấu hình máy chủ hơn là vấn đề về ứng dụng

điều kiện cuộc đua

Một vấn đề khác cần lưu ý với đồng thời là điều kiện chủng tộc. Điều kiện chủng tộc là một vấn đề hơi phức tạp, dễ giải thích hơn bằng một ví dụ. Một ví dụ phổ biến về điều kiện cạnh tranh là theo dõi lượt xem trang. Điều đó nói rằng, hầu hết các loại theo dõi đều dễ bị điều kiện cuộc đua

PHP hoạt động như thế nào?

Trên đây là dòng thời gian của mã PHP đang theo dõi lượt xem trang. Mã theo dõi lượt xem trang có màu hồng. Trong đó, chúng tôi tìm nạp số lượt xem trang hiện tại, tăng số lượng lên một và sau đó lưu lại giá trị. Đây là tất cả khá đơn giản cho đến nay

Bây giờ, hãy thêm đồng thời vào hỗn hợp. Điều gì xảy ra nếu có nhiều lần thực thi mã PHP theo dõi lượt xem trang của chúng tôi cùng một lúc?

PHP hoạt động như thế nào?

Mọi thứ có vẻ ổn trong dòng thời gian này. Chúng tôi có nhiều lần thực thi mã PHP, nhưng không có thanh màu hồng nào trùng nhau. Mỗi lần thực hiện có thể tìm nạp số lượt xem trang hiện tại, tăng nó lên một và sau đó lưu lại

Điều kiện cuộc đua trong thực tế

Nhưng điều gì sẽ xảy ra nếu nhiều lần thực thi mã PHP của chúng ta chồng lên nhau? . Chà, đây là nơi mọi thứ bắt đầu đổ vỡ

PHP hoạt động như thế nào?

Đây là mốc thời gian trong đó ba vụ hành quyết của chúng tôi gần nhau hơn về thời gian. Như bạn có thể thấy, việc thực thi mã PHP theo dõi lượt xem trang của chúng tôi hiện chồng chéo. Sự chồng chéo mã này là điều kiện cuộc đua của chúng tôi

Do đó, mức tăng lượt xem trang từ quy trình thứ hai không chính xác. Đó là bởi vì nó tìm nạp số lượt xem trang trước khi quy trình đầu tiên lưu lại. Vì vậy, nó tính số lượt xem trang giống như quy trình đầu tiên

Nhưng đó cũng không phải là kết thúc của nó. Do điều kiện tương tranh, quy trình thứ ba cũng ghi đè số lượt xem trang được quy trình thứ hai ghi lại. Nếu chúng tôi có nhiều quy trình đồng thời hơn, điều này sẽ làm phức tạp thêm các vấn đề do điều kiện cuộc đua gây ra

Kết quả là theo dõi không chính xác số lượt xem trang. Mã theo dõi lượt xem trang của chúng tôi cuối cùng chỉ tính hai lượt xem trang trong khi lẽ ra nó phải tính ba. Đó là một vấn đề nghiêm trọng nếu bạn bận tâm thiết kế một hệ thống như vậy

Sửa chữa một điều kiện cuộc đua

Vậy làm cách nào để khắc phục điều kiện tương tranh trong mã PHP theo dõi lượt xem trang của chúng tôi? . Nhưng đó không phải là một giải pháp đặc biệt hữu ích nếu bạn muốn học cách khắc phục các điều kiện cuộc đua

Chà, vấn đề với điều kiện cuộc đua là có vô số cách để khắc phục chúng. Chúng tôi không thể bao gồm tất cả trong bài viết này. Nhưng đừng để điều này ngăn cản chúng ta nói về nó một chút

Chìa khóa để khắc phục điều kiện cuộc đua là khái niệm loại trừ lẫn nhau. Bản thân loại trừ lẫn nhau là một thuộc tính của chủ đề lớn hơn được gọi là kiểm soát tương tranh. Và điểm kiểm soát đồng thời là đảm bảo rằng các hoạt động đồng thời (như theo dõi lượt xem trang của chúng tôi) tạo ra kết quả chính xác

Bây giờ, hãy quay trở lại loại trừ lẫn nhau. Loại trừ lẫn nhau là ý tưởng chỉ một lần thực thi có thể nhập một đoạn mã quan trọng tại một thời điểm. Điều này ngăn chặn các điều kiện cạnh tranh vì bạn không thể có nhiều lần thực thi đoạn mã này cùng một lúc

Loại trừ lẫn nhau bằng cách sử dụng khóa

Và làm thế nào chúng ta có thể thực hiện loại trừ lẫn nhau với PHP? . Bạn sử dụng khóa để giới hạn quyền truy cập vào tài nguyên. Trong trường hợp này, đây sẽ là số lượt xem trang mà chúng tôi chỉ muốn một quy trình truy cập tại một thời điểm

PHP hoạt động như thế nào?

Dòng thời gian này hiển thị điều gì xảy ra với mã theo dõi lượt xem trang của chúng tôi khi chúng tôi sử dụng khóa. Thanh màu vàng trong dòng thời gian của chúng tôi biểu thị thời gian chờ đợi thực thi khác giải phóng khóa. Mã theo dõi lượt xem trang của chúng tôi chỉ có thể bắt đầu khi điều đó xảy ra

Nhưng ngay cả khi đó, vẫn có nhiều cách để thực hiện khóa. Ví dụ, bạn có thể sử dụng một semaphore. Đây là một biến hoặc kiểu dữ liệu đặc biệt mà bạn có thể sử dụng để xác định xem một tài nguyên có đang được sử dụng hay không. Có các semaphores trong PHP nên đây là một tùy chọn mà bạn có sẵn

Loại trừ lẫn nhau bằng cách truyền tin nhắn

Một tùy chọn khác ngoài việc sử dụng khóa là sử dụng chuyển tin nhắn. Truyền tin nhắn xoay quanh việc cô lập một đoạn mã quan trọng bên trong ứng dụng web của bạn. Sau khi bị cô lập, mã của bạn sẽ không bao giờ thực hiện cuộc gọi đến đoạn mã này nữa. Thay vào đó, nó sẽ gửi một tin nhắn đến ứng dụng web để chạy nó cho bạn

Vì vậy, trong trường hợp mã theo dõi lượt xem trang của chúng tôi, chúng tôi sẽ tách mã đó bên trong ứng dụng của mình. Sau đó, chúng tôi sẽ thay thế mã đó bằng mã gửi tin nhắn đến ứng dụng của chúng tôi. Thông báo này sẽ yêu cầu ứng dụng của chúng tôi chạy mã này cho chúng tôi

Nhưng điều đó khác với việc gọi mã theo dõi lượt xem trang của chúng tôi như thế nào? . Quy trình hiện tại của bạn sẽ không chạy đoạn mã quan trọng gây ra tình trạng tương tranh

Thay vào đó, đó là một quá trình khác chạy nó. Và quy trình đó có thể thực thi loại trừ lẫn nhau đối với đoạn mã quan trọng đó. Điều này kết thúc việc ngăn chặn tình trạng cuộc đua

Rất nhiều ứng dụng PHP sử dụng hàng đợi tin nhắn để triển khai hệ thống nhắn tin của họ. Ứng dụng PHP sẽ gửi một tin nhắn đến hàng đợi tin nhắn. Sau đó, hàng đợi tin nhắn sẽ xử lý từng tin nhắn một theo thứ tự nhận được chúng

Có rất nhiều sự lựa chọn từ hệ thống hàng đợi tin nhắn. Một số framework (chẳng hạn như Laravel) cũng có hệ thống hàng đợi tin nhắn riêng. Dù bằng cách nào, đó là một cách tuyệt vời để triển khai loại trừ lẫn nhau bên trong ứng dụng PHP của bạn

Các ứng dụng PHP là duy nhất

Như bạn có thể thấy, các ứng dụng PHP nằm trong danh mục của riêng chúng. Họ không hoàn toàn hành xử theo cách mà nhiều nhà phát triển web quen thuộc. Điều này đặc biệt đúng nếu chúng đến từ các ngôn ngữ lập trình khác. (Nhưng ngay cả các nhà phát triển PHP không phải lúc nào cũng biết chúng hoạt động như thế nào. )

Điều đó nói rằng, cũng có một số yếu tố chung với các ngôn ngữ lập trình khác. Nhưng cuối cùng thì điều quan trọng là biết điều gì giống và điều gì khác nhau. Nó sẽ giúp bạn thực hiện công việc kiến ​​trúc các giải pháp của mình tốt hơn bằng cách sử dụng PHP

PHP là gì và nó hoạt động như thế nào?

PHP là viết tắt của Hypertext Preprocessor. Đó là ngôn ngữ kịch bản mã nguồn mở phía máy chủ được sử dụng để phát triển web động và có thể được nhúng vào mã HTML .

Làm thế nào để PHP làm việc nội bộ?

PHP với vai trò là công cụ phân tích cú pháp tệp thành mã thông báo, xây dựng Cây cú pháp trừu tượng (AST) và sau đó chuyển đổi cây này thành Mã hành trình . Các Opcode như vậy có thể được lưu vào bộ đệm để thực hiện. Trên các máy chủ web, PHP thường được sử dụng với PHP-FPM, mang lại khả năng mở rộng đáng kinh ngạc cho nó.

Làm thế nào để PHP làm việc với HTML?

Nếu bạn muốn trình bày các trang web, bạn cần sử dụng mã đánh dấu HTML. PHP chỉ đơn thuần là một ngôn ngữ lập trình (trong ngữ cảnh này) được sử dụng để tạo động đánh dấu HTML. Vì vậy, nếu bạn yêu cầu một tệp PHP và mong đợi một trang web được trả lại, tập lệnh PHP phải tạo đánh dấu HTML và gửi nó trong phản hồi.

PHP được sử dụng như thế nào?

PHP thực sự có thể làm bất cứ điều gì liên quan đến tập lệnh phía máy chủ hay phổ biến hơn là phần phụ trợ của trang web. Ví dụ: PHP có thể nhận dữ liệu từ biểu mẫu, tạo nội dung trang động, có thể làm việc với cơ sở dữ liệu, tạo phiên, gửi và nhận cookie, gửi email, v.v.