Hướng dẫn how is a php file processed? - một tệp php được xử lý như thế nào?

Hầu hết chúng ta đều quen thuộc với cách một ứng dụng web hoạt động. 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 chúng tôi, nó sẽ liên hệ với một máy chủ web, người sẽ trả về một số HTML. Trình duyệt sau đó sẽ đưa ra các yêu cầu tiếp theo và sau đó hiển thị trang web. (Đây là một sự đơn giản hóa! Nhưng đó là ý tưởng chính.)

Nhưng những gì xảy ra trên máy chủ web trả về HTML? Làm thế nào là máy chủ web nhận được HTML mà nó trở lại trình duyệt của chúng tôi? Và, để nói cụ thể hơn, làm thế nào điều này xảy ra trong PHP?

Đây là một cái gì đó 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 những gì xảy ra giữa mã PHP của chúng tôi và trình duyệt là một chút bí ẩn.

Có một cơ hội tốt mà bạn đang nghĩ, thì Vâng, trang web của tôi tải. Tại sao tôi nên nghĩ hai lần về điều này? ” Và đó là sự thật! Nhưng sự thật là việc biết làm thế nào một ứng dụng PHP 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 bạn. Nhưng nó cũng rất 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ụ, nó khó hiểu bộ nhớ đệm ứng dụng PHP nếu bạn không hiểu cách ứng dụng PHP hoạt động.

Cuộc sống 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#), điều lớn nhất cần hiểu là PHP không phải là một. Nó là một ngôn ngữ được giải thích. Điều này có nghĩa là PHP sẽ cần phải diễn giải và biên dịch mã của ứng dụng của bạn cho mỗi yêu cầu được thực hiện cho nó.

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

Hướng dẫn how is a php file processed? - một tệp php được xử lý 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 thực hiện yêu cầu cho một trang web. Yêu cầu này sẽ nhấn vào máy chủ web. Máy chủ web sau đó 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), thì nó sẽ chuyển tệp đó cho trình thông dịch PHP. Trình thông dịch PHP sẽ đọc tệp PHP, phân tích nó (và các tệp bao gồm khác) và sau đó thực thi nó. Khi trình thông dịch PHP hoàn tất việc thực thi tệp PHP, nó sẽ trả về đầ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 yêu cầu PHP là đưa ra tuyên bố này. Đây là sự thật đằng sau bất kỳ ứng dụng PHP nào cho dù đó là một ứng dụng Laravel hay Symfony. .

Trong kịch bản này, máy chủ web không gì khác hơn là một trung gian. Mỗi lần ai đó đưa ra yêu cầu cho 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 trong các ngôn ngữ lập trình web khác. Các ngôn ngữ lập trình web này tạo ra những gì chúng tôi 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 là khác nhau 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. Nó không phải là một 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ư các máy chủ web. Sơ đồ dưới đây sẽ giúp bạn hình dung điều này.

Hướng dẫn how is a php file processed? - một tệp php được xử lý như thế nào?

Như bạn có thể thấy, ứng dụng web nằm trong máy chủ ứng dụng. (Thậm chí có thể có nhiều hơn một ứ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 cũng giống như yêu cầu cho ứng dụng web. Nó không phải là một trung gian giống như với PHP.

Động lực khác nhau

Sự khác biệt cơ bản này giữa một ứ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à xem các thay đổi ngay lập tức. (Chà, đó là trừ khi bạn có một số giải pháp bộ đệm tại chỗ!)

Nhưng bạn có thể nói tương tự 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 các tệp mẫu một cách nhanh chóng. 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 để Lôi 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 thế nào để chúng tôi quản lý bộ nhớ khi chúng tôi làm việc với một ứng dụng PHP? Câu trả lời là hầu hết chúng ta đều không quản lý bộ nhớ khi chúng tôi làm việc trên một ứng dụng PHP.

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

Nếu bạn tập trung vào hiệu suất nhiều hơn, bạn sẽ cố gắng giảm việc sử dụng bộ nhớ của mã. Ví dụ: hãy để nói rằng bạn đang hết bộ nhớ lưu trữ tệp XML lớn trong bộ nhớ bằng SimplexML. Thay vào đó, bạn có thể chuyển sang XMlReader để đi qua tệp XML thay thế.

Rò rỉ bộ nhớ

Bạn đã bao giờ gặp phải rò rỉ bộ nhớ với PHP chưa? Rò rỉ bộ nhớ là kết quả của việc quản lý bộ nhớ không đúng như lỗi bộ nhớ của chúng tôi. Chúng xảy ra bạn vẫn tồn tại dữ liệu trong bộ nhớ và bộ nhớ đó không bao giờ bị xóa sau khi bạn đã hoàn thành dữ liệu.

Điều đó nói rằng, rò rỉ bộ nhớ khá hiếm với các ứng dụng PHP. Điều đó vì PHP là một kịch bản chạy và sau đó chấm dứt. Sau khi chấm dứt, 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 đó ngăn chặ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 với 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ó chỉ chấm dứt khi bạn tự khởi động lại máy chủ web. Điều này không phải là (hoặc không nên!) Bị 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ố khi lấy ứng dụng web của bạn.

Dữ liệu tồn tại

Vì vậy, chúng tôi khá rõ ràng về việc 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 để tồn tại dữ liệu trong bộ nhớ.

Trên thực tế, một phần lý do tại sao có rất í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 tôi có hai yêu cầu giống hệt nhau cho ứng dụng PHP của chúng tôi. 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. 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ề các tập lệnh PHP trước đó. Khi PHP hoàn thành việc thực thi 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 có thể chia sẻ dữ liệu giữa các yêu cầu bằng cách sử dụng bộ nhớ như ứng dụng web truyền thống.

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à bản thân sử dụng phương pháp lưu trữ. Phương thức lưu trữ có thể là một tệp, 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 pháp lưu trữ này. Những cái bạn sử dụng phụ thuộc vào những gì ứng dụng của bạn hỗ trợ và nhu cầu của bạn. Nhưng, nếu bạn phải chọn một, sử dụng một kho lưu trữ dữ liệu như Redis hoặc Memcached có xu hướng là lựa chọn phổ biến nhất.

Đồng thời

Đồng thời là một khái niệm khác mà rất quan trọng để hiểu với các ứng dụng PHP. Đồng thời là gì? Nó có ý tưởng rằng bạn có thể chia phần mềm thành các phần nhỏ hơn. 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ị phá vỡ.

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 đơn ứng dụng của chúng tôi 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 áp dụng vì cách PHP xử lý nhiều yêu cầu cho một ứng dụng.

Như chúng tôi đã 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 số khác. Máy chủ web sẽ chuyển yêu cầu cho 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à nó rất phổ biến đối với trình thông dịch PHP được xử lý nhiều hơn một tập lệnh cùng một lúc.

Hướng dẫn how is a php file processed? - một tệp php được xử lý 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 thời gian. Chúng tôi có ba quy trình đồng thời của một tập lệnh PHP. Họ bắt đầu và kết thúc vào các thời điểm khác nhau, nhưng một số sự chồng chéo của họ.

Đâ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ơn một hàm ý với PHP. Điều đó nói rằng, họ không phải là những điều mà bạn phải nghĩ về mọi lúc. (Nhưng nó vẫn tốt để biết về họ!)

Đa nhiệm

Hãy bắt đầu với đa nhiệm. Đa nhiệm là ý tưởng rằng bạn có thể thực hiện một tập hợp các tác vụ 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 vào khái niệm này rất nhiều để thực hiện các nhiệm vụ chuyên sâu.

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

Hướng dẫn how is a php file processed? - một tệp php được xử lý như thế nào?

Cái này hoạt động ra sao? Vâng, như bạn có thể thấy trong sơ đồ trên, bạn có yêu cầu ban đầu cho ứng dụng PHP của mình. Yêu cầu ban đầu này sẽ khiến ứng dụng PHP tạo ra các trình tự phụ khác cho chính nó. Những điều khoản khác này là các nhiệm vụ ứng dụng mới của chúng tôi. Họ chạy cùng lúc với yêu cầu ban đầu của chúng tôi.

Nó có giá trị chỉ ra rằng những yêu cầu này thường được gửi không đồng bộ. Họ không có tác động lớn đến thời gian thực hiện của tập lệnh PHP. Điều này có nghĩa là họ không làm chậm việc thực hiện ứ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 CMSS PHP phổ biến xử lý các công việc cron. Trong CMS, một công việc cron là một nhiệm 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ý. Một CMS xử lý các công việc cron 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 yêu cầu CMS.

Ngang đói tài nguyên

Nhưng đồng thời cũng không có vấn đề gì. Cái phổ biến nhất là đói tài nguyên có nghĩa là chính xác những gì 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à họ cần để chạy tốt (hoặc hoàn toàn).

Nó có giá trị chỉ ra rằng rò rỉ bộ nhớ mà chúng ta đã thấy trước đó là một hình thức chết đói tài nguyên. Bộ nhớ phát triển rò rỉ bỏ đói bộ nhớ máy chủ cho đến khi ứng dụng ngừng hoạt động. Nhưng, vì các ứng dụng PHP không bị rò rỉ bộ nhớ, nên nó không phải là nguyên nhân của vấn đề ở đây.

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

Vậy điều gì 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? Chà, tại thời điểm này, nó phụ thuộc vào cách máy chủ của bạn cấu hình máy chủ của bạn. 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 việc bỏ đói tài nguyên là rất nhiều vấn đề với ứng dụng PHP của bạn. Vâng, bạn có thể giảm việc sử dụng bộ nhớ. Và, kết quả là, bạn có thể thực hiện đồng thời hơn ứng dụng PHP của mình.

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 nó có một cài đặt cấu hình quan trọng cho máy chủ ứng dụng PHP. Ngôi sao tài nguyên là vấn đề cấu hình máy chủ hơn là sự cố ứng dụng.

Điều kiện chủng tộc

Một vấn đề khác cần nhận thức với sự đồng thời là điều kiện chủng tộc. Một điều kiện cuộc đua là một vấn đề phức tạp mà dễ dàng giải thích với một ví dụ. Một ví dụ phổ biến về một điều kiện cuộc đua là theo dõi chế độ 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 chủng tộc.

Hướng dẫn how is a php file processed? - một tệp php được xử lý như thế nào?

Trên đây là dòng thời gian của mã PHP của chúng tôi mà theo dõi các chế độ xem trang. Mã theo dõi 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ê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 sự đồng thời vào hỗn hợp! Điều gì xảy ra nếu có nhiều lần thực hiện xem trang theo dõi mã PHP của chúng tôi cùng một lúc? Chà, hãy để cập nhật dòng thời gian của chúng tôi và tìm hiểu.

Hướng dẫn how is a php file processed? - một tệp php được xử lý 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 hiện mã PHP của chúng tôi, nhưng không có thanh màu hồng nào chồng chéo. Mỗi lần thực thi có thể tìm nạp số lượt xem trang hiện tại, tăng thêm một lần và sau đó lưu lại.

Điều kiện chủng tộc trong thực tế

Nhưng điều gì xảy ra nếu nhiều lần thực hiện mã PHP của chúng tôi chồng chéo? Rốt cuộc, nó không thực tế khi mong đợi các vụ hành quyết của chúng tôi sẽ tốt đẹp và lan rộng như thế mọi lúc. Vâng, đây là nơi mọi thứ bắt đầu tan vỡ.

Hướng dẫn how is a php file processed? - một tệp php được xử lý như thế nào?

Ở đây, một dòng thời gian nơi ba vụ hành quyết của chúng tôi gần gũi hơn với nhau. Như bạn có thể thấy, việc thực hiện xem trang của chúng tôi khi theo dõi mã PHP chồng chéo ngay bây giờ. Mã này chồng chéo là điều kiện chủng tộc của chúng tôi.

Bởi vì nó, việc xem trang tăng từ quá trình thứ hai là không chính xác. Điều đó bởi vì nó lấy số lượng xem trang trước khi quá trình đầu tiên lưu lại. Vì vậy, nó đếm cùng một số lượt xem trang như quá 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 cuộc đua, quá trình thứ ba cũng ghi đè lên số lượt xem trang được ghi lại bởi quy trình thứ hai. Nếu chúng ta có các quy trình đồng thời hơn, điều này sẽ kết hợp các vấn đề gây ra bởi điều kiện chủng tộc.

Kết quả là theo dõi không chính xác số lượng lượt xem trang. Mã theo dõi xem trang của chúng tôi đã kết thúc chỉ đếm hai chế độ xem trang khi nó nên đếm 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ì vậy, làm thế nào để chúng tôi sửa chữa điều kiện cuộc đua trong xem trang theo dõi mã PHP của chúng tôi? Giải pháp rõ ràng là không làm điều đó và sử dụng một dịch vụ bên ngoài như Google Analytics. 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 sửa chữa các điều kiện đua xe!

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

Chìa khóa để sửa chữa một điều kiện chủng tộc là khái niệm loại trừ lẫn nhau. Loại trừ lẫn nhau tự nó là một thuộc tính của chủ đề lớn hơn được gọi là kiểm soát đồng thời. 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 chế độ xem trang của chúng tôi) tạo ra kết quả chính xác.

Bây giờ, hãy để Lừa quay trở lại để loại trừ lẫn nhau. Loại trừ lẫn nhau là ý tưởng rằng chỉ một 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 chủng tộc vì bạn có thể có nhiều hơn một lần thực hiện mã này tại một thời điểm.

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? Một trong những cách phổ biến để thực hiện nó là với một khóa. Bạn sử dụng khóa để giới hạn quyền truy cập vào tài nguyên. Trong kịch bản này, đây sẽ là số lượt xem trang mà chúng tôi chỉ muốn một quá trình truy cập tại một thời điểm.

Hướng dẫn how is a php file processed? - một tệp php được xử lý như thế nào?

Dòng thời gian này cho thấy những gì xảy ra với mã theo dõi 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 đại diện cho thời gian chờ đợi việc thực hiện khác giải phóng khóa. Mã theo dõi trang của chúng tôi chỉ có thể bắt đầu khi điều đó xảy ra.

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

Loại trừ lẫn nhau bằng cách sử dụng thông báo truyền

Một tùy chọn khác ngoài việc sử dụng khóa là sử dụng thông báo đi qua. Thông báo truyền lại 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 không bao giờ thực hiện cuộc gọi đến đoạn mã này một lần nữa. Thay vào đó, nó sẽ gửi một thông báo đến ứng dụng web để chạy nó cho bạn.

Vì vậy, trong trường hợp mã theo dõi xem trang của chúng tôi, chúng tôi sẽ cô lập mã đó bên trong ứng dụng của chúng tôi. 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ẽ nói với ứng dụng của chúng tôi để chạy mã này cho chúng tôi.

Nhưng làm thế nào khác với việc thực hiện cuộc gọi đến mã theo dõi trang của chúng tôi? Yếu tố quan trọng để truyền tin nhắn là bạn gửi tin nhắn bên ngoài quy trình hiện tại. Quá trình hiện tại của bạn đã giành được một phần mã quan trọng gây ra tình trạng cuộc đua.

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

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

Có rất nhiều sự lựa chọn từ các hệ thống hàng đợi tin nhắn. Một số khung (như Laravel) cũng có hệ thống hàng đợi thông điệp của riêng họ. Dù bằng cách nào, đó là một cách tuyệt vời để thực hiện loại trừ lẫn nhau 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 một danh mục của riêng họ. Họ không thể hành xử theo cách mà rất 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 cũng không biết họ làm việc như thế nào!)

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

Làm thế nào một tệp PHP được xử lý trên máy chủ?

Trình thông dịch PHP sẽ đọc tệp PHP, phân tích nó (và các tệp bao gồm khác) và sau đó thực thi nó. Khi trình thông dịch PHP hoàn tất việc thực thi tệp PHP, nó sẽ trả về đầ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.. Once the PHP interpreter finishes executing the PHP file, it'll return an output. The web server will take that output and send it back as a response to the browser.

Làm thế nào để một tệp PHP hoạt động?

Bước 1: Khách hàng yêu cầu trang web trên trình duyệt.Bước 2: Máy chủ (nơi cài đặt phần mềm PHP) sau đó kiểm tra.Tệp PHP được liên kết với yêu cầu.Bước 3: Nếu được tìm thấy, nó sẽ gửi tệp đến trình thông dịch PHP (vì PHP là ngôn ngữ được giải thích), trong đó kiểm tra dữ liệu được yêu cầu vào cơ sở dữ liệu.

Các trang PHP được xử lý như thế nào?

Khi trình duyệt yêu cầu một trang PHP, máy chủ web sẽ gửi trang đến động cơ PHP, một phần mềm chạy trên máy chủ.Các quy trình này là mã PHP và hợp nhất đầu ra với HTML.Và đó là đầu ra được hợp nhất này được gửi lại cho trình duyệt.the web server sends the page to the PHP engine, a piece of software that runs on the server. This processes is the PHP code and merges the output with the HTML. And it's this merged output that's sent back to the browser.

Quá trình PHP là gì?

PHP là từ viết tắt của bộ tiền xử lý PHP: Tiền xử lý siêu văn bản.Đó là ngôn ngữ kịch bản cho phép các nhà phát triển web chạy các quy trình từ một trang web.Thay vì các tập lệnh đó chạy trên trình duyệt, chúng chạy trên máy chủ web và sau đó gửi đầu ra của tập lệnh đến trang web.a scripting language that lets web developers run processes from a web page. Instead of those scripts running on the browser, they run on the webserver and then deliver the script's output to the web page.