Để hiểu cách thức hoạt động của Drupal, bạn cần hiểu cơ chế phục vụ trang của Drupal.
Nói tóm lại, tất cả các cuộc gọi / url / yêu cầu được phân phối bởi index.php, tải Drupal bằng cách bao gồm nhiều tệp / mô-đun khác nhau và sau đó gọi hàm thích hợp, được xác định trong mô-đun, để phục vụ yêu cầu / url.
Dưới đây là trích từ cuốn sách, Pro Drupal Development, giải thích quá trình bootstrap của Drupal,
Quá trình Bootstrap
Drupal tự khởi động theo mọi yêu cầu bằng cách trải qua một loạt các giai đoạn bootstrap. Các giai đoạn này được xác định trong bootstrap.inc và tiến hành như được mô tả trong các phần sau.
Khởi tạo cấu hình
Giai đoạn này cư trú mảng cấu hình bên trong của Drupal và thiết lập URL cơ sở ($ base_url) của trang web. Tệp settings.php được phân tích cú pháp thông qua include_once () và bất kỳ ghi đè biến hoặc chuỗi nào được thiết lập ở đó đều được áp dụng. Xem các phần ghi đè biến đổi của bộ dữ liệu và các phần ghi đè của bộ dữ liệu của các trang web tập tin / all / default / default.sinstall.php để biết chi tiết.
Cache trang sớm
Trong các tình huống đòi hỏi mức độ mở rộng cao, một hệ thống bộ đệm có thể cần phải được gọi trước khi kết nối cơ sở dữ liệu thậm chí còn được thử. Giai đoạn bộ đệm trang đầu cho phép bạn bao gồm (bao gồm ()) một tệp PHP có chứa một hàm gọi là page_cache_ fastpath (), sẽ tiếp quản và trả lại nội dung cho trình duyệt. Bộ đệm trang đầu được bật bằng cách đặt biến page_cache_fastpath thành TRUE và tệp được bao gồm được xác định bằng cách đặt biến cache_inc cho đường dẫn của tệp. Xem chương về bộ nhớ đệm cho một ví dụ.
Khởi tạo cơ sở dữ liệu
Trong giai đoạn cơ sở dữ liệu, loại cơ sở dữ liệu được xác định và kết nối ban đầu được thực hiện sẽ được sử dụng cho các truy vấn cơ sở dữ liệu.
Kiểm soát truy cập dựa trên tên máy chủ / IP
Drupal cho phép cấm các máy chủ trên cơ sở địa chỉ IP / tên máy chủ. Trong giai đoạn kiểm soát truy cập, kiểm tra nhanh được thực hiện để xem liệu yêu cầu có đến từ máy chủ bị cấm hay không; nếu vậy, truy cập bị từ chối.
Khởi tạo xử lý phiên
Drupal tận dụng khả năng xử lý phiên dựng sẵn của PHP nhưng lại ghi đè một số trình xử lý riêng để thực hiện xử lý phiên dựa trên cơ sở dữ liệu. Các phiên được khởi tạo hoặc thiết lập lại trong giai đoạn phiên. Đối tượng người dùng $ toàn cầu đại diện cho người dùng hiện tại cũng được khởi tạo ở đây, mặc dù về hiệu quả không phải tất cả các thuộc tính đều có sẵn (chúng được thêm bởi một lệnh gọi rõ ràng đến hàm user_load () khi cần).
Cache trang muộn
Trong giai đoạn bộ đệm trang muộn, Drupal tải đủ mã hỗ trợ để xác định xem có phục vụ trang từ bộ đệm trang hay không. Điều này bao gồm hợp nhất các cài đặt từ cơ sở dữ liệu vào mảng được tạo trong giai đoạn khởi tạo cấu hình và tải hoặc phân tích mã mô-đun. Nếu phiên cho biết rằng yêu cầu được đưa ra bởi người dùng ẩn danh và bộ đệm trang được bật, trang sẽ được trả về từ bộ đệm và dừng thực thi.
Xác định ngôn ngữ
Ở giai đoạn xác định ngôn ngữ, hỗ trợ đa ngôn ngữ của Drupal được khởi tạo và quyết định được đưa ra là ngôn ngữ nào sẽ được sử dụng để phục vụ trang hiện tại dựa trên cài đặt của người dùng và trang web. Drupal hỗ trợ một số lựa chọn thay thế để xác định hỗ trợ ngôn ngữ, chẳng hạn như tiền tố đường dẫn và đàm phán ngôn ngữ cấp tên miền.
Con đường
Ở pha đường dẫn, mã xử lý các đường dẫn và bí danh đường dẫn được tải. Giai đoạn này cho phép các URL có thể đọc được của con người được giải quyết và xử lý bộ đệm và tra cứu đường dẫn Drupal nội bộ.
Đầy
Giai đoạn này hoàn thành quá trình bootstrap bằng cách tải thư viện các hàm phổ biến, hỗ trợ chủ đề và hỗ trợ ánh xạ gọi lại, xử lý tệp, Unicode, bộ công cụ hình ảnh PHP, tạo và xử lý biểu mẫu, xử lý thư, bảng tự động sắp xếp và phân trang kết quả. Trình xử lý lỗi tùy chỉnh của Drupal được đặt và tất cả các mô-đun đã bật được tải. Cuối cùng, Drupal kích hoạt hook init, để các mô-đun có cơ hội được thông báo trước khi bắt đầu xử lý chính thức yêu cầu.
Khi Drupal đã hoàn thành bootstrapping, tất cả các thành phần của khung có sẵn. Đã đến lúc chấp nhận yêu cầu của trình duyệt và chuyển nó đến chức năng PHP sẽ xử lý nó. Ánh xạ giữa các URL và các chức năng xử lý chúng được thực hiện bằng cách sử dụng sổ đăng ký gọi lại, đảm nhiệm cả kiểm soát truy cập và ánh xạ URL. Các mô-đun đăng ký cuộc gọi lại bằng cách sử dụng móc menu (để biết thêm chi tiết, xem Chương 4).
Khi Drupal xác định rằng có tồn tại một cuộc gọi lại mà URL của trình duyệt yêu cầu ánh xạ thành công và người dùng có quyền truy cập vào cuộc gọi lại đó, quyền điều khiển được chuyển đến chức năng gọi lại.
Xử lý một yêu cầu
Hàm gọi lại thực hiện bất kỳ công việc nào được yêu cầu để xử lý và tích lũy dữ liệu cần thiết để thực hiện yêu cầu. Ví dụ: nếu nhận được yêu cầu về nội dung như http://example.com/
q = node / 3, thì URL được ánh xạ tới hàm node_page_view () trong node.module. Xử lý thêm sẽ lấy dữ liệu cho nút đó từ cơ sở dữ liệu và đưa nó vào cấu trúc dữ liệu. Sau đó, đã đến lúc theo chủ đề.
Sử dụng dữ liệu
Chủ đề liên quan đến việc chuyển đổi dữ liệu đã được truy xuất, thao tác hoặc tạo thành HTML (hoặc XML hoặc định dạng đầu ra khác). Drupal sẽ sử dụng chủ đề mà quản trị viên đã chọn để cung cấp cho trang web giao diện chính xác. Đầu ra kết quả sau đó được gửi đến trình duyệt web (hoặc ứng dụng khách HTTP khác).