2009-06-09 27 views
36

Tôi gặp khó khăn khi hiểu cách apache/php/mysql stack hoạt động ở mức thấp (bao gồm tương tác với trình duyệt). Có một mô tả hay ở đâu đó (sách, trang web, v.v.) sẽ hướng dẫn tôi qua toàn bộ đường dẫn và giải thích cách bắt đầu bằng trình duyệt reqesting url, yêu cầu http đang được gửi, cách apache nói với php, cách thảo luận php mysql (các kết nối liên tục và không liên tục), v.v., tôi muốn hiểu những gì chờ đợi cho những gì trong chuỗi này, trong đó thời gian chờ được xử lý, bao lâu ổ cắm được mở và đóng. Một cuốn sách, một bài báo có thể? Có rất nhiều tài liệu về từng thành phần riêng lẻ, nhưng tôi không thể tìm thấy "hướng dẫn"."Làm thế nào xúc xích được thực hiện" tour của apache/php/mysql tương tác

Những giải thích mà tôi cho đến nay là rất cao: nhìn xem, đây là một con bò hạnh phúc, nó đến Đại học Bovine, nhìn - tất cả đều bị cuốn vào kệ siêu thị. Những gì tôi cần là xúc xích trang trại/lò mổ/xe tải/chuyến tham quan nhà máy, bắt đầu bằng cách bắt chước bò :)

[update] Cho đến ngày nay tôi không tìm thấy cách nào tốt hơn để tìm hiểu về những điều này ngoài việc đọc nguồn.

+0

Câu hỏi hay. Một cuốn sách ASP.NET tôi đọc một lần đã trải qua cùng một loại tổng quan (họ gọi nó là Vòng đời yêu cầu ứng dụng) và thông tin đó bị mắc kẹt với tôi trong suốt quá trình phát triển. – GloryFish

+0

Vâng, đó là chính xác những gì tôi đang tìm kiếm. – deadprogrammer

+0

Tôi nghi ngờ đây sẽ là một câu trả lời khác nhau tùy thuộc vào việc bạn có mod_php hoặc FastCGI – maxwellb

Trả lời

0

Theo như tôi hiểu nó apache nhận được yêu cầu, và làm việc ra phải làm gì với nó dựa trên tùy chọn .htaccess hoặc cấu hình của bạn. Sau đó, nó chuyển yêu cầu này tới PHP để phân tích cú pháp, nếu cần. PHP thực hiện hai lần quét mã, đầu tiên là phân tích cú pháp trước, điều này sẽ loại bỏ các lỗ hổng rõ ràng và chạy các hàm ở cấp cao nhất (bỏ qua bất kỳ câu lệnh if, vòng lặp, hàm bao gồm, evals hoặc lamda), trước khi phân tích cú pháp trang cho thật. Bất cứ điều gì được thực hiện với echo, tôi tin rằng, được trả về như là tiêu chuẩn ra dòng, và được trả lại cho apache. Nếu apache lần trang ra nó sẽ gửi tín hiệu giết cho PHP, mà đóng đối tượng, in các thông báo lỗi nếu cần thiết, trước khi thoát. Khi trang thoát apache có xu hướng tiêu đề và trả về trang.

Tôi rất muốn biết thêm về điều này, vì vậy nếu bất cứ ai có thể giải thích rõ hơn hoặc có chỉnh sửa/mở rộng câu trả lời của tôi, tôi rất muốn nghe nó.

1

Bạn đúng trong thực tế là có toàn bộ sách được viết về cách tất cả điều này phù hợp với togeather ở đây là liên kết đến "hướng dẫn" mà nó chạm vào các phần chính.

http://computer.howstuffworks.com/web-server.htm

Hy vọng nó giúp

+1

tốt, nó không thực sự. Nó chỉ là một vài điểm tay rất cao. – deadprogrammer

6

PHP and MySQL by example có một bức tranh khá cơ bản của quá trình, mà tôi nghĩ rằng có thể bạn đã hiểu.

Tìm hiểu sâu hơn hình ảnh đó mặc dù là một cuộc thảo luận khá dài. Trớ trêu thay, bạn có thể đọc những cuốn sách tôi chỉ liên kết cho một mô tả khá tốt. Nếu bạn có câu hỏi cụ thể hơn, tôi khuyên bạn nên mở các câu hỏi mới cho họ. Thưởng thức!

+0

Cảm ơn bạn đã chỉnh sửa bản nhạc! – UltimateBrent

1

Hành động tốt nhất sẽ là có được một cuốn sách hay về ngăn xếp LAMP.

Một phản ứng nhanh chóng (hỏi thêm nếu bạn cảm thấy cần nó) địa chỉ liên lạc của trình duyệt web server mặc dù giao thức HTTP Server tạo ra (chúng ta hãy rời khỏi thế nào cho thời điểm này) một kết quả html và viết nó trở lại. Mỗi trình duyệt chỉ hiểu giao thức http (vì lợi ích của phân tích này).

Bây giờ các mục như biểu tượng, hình ảnh, javascript, v.v, chỉ được đọc từ máy chủ apache và "đã sao chép" vào trình duyệt. Tương tự trong các tệp html thuần túy. Sự khác biệt là trong các tập tin php (Tôi đang oversimplifying ở đây). Chúng được chuyển đến mô-đun php và phản hồi (của mô-đun) sẽ được gửi trở lại trình duyệt.

Mô đun php là những gì hiểu php. Chúng ta có ở đây không? nếu có thì: Kịch bản Php có thể (hoặc có thể không) yêu cầu dữ liệu từ máy chủ MySQL, nó phải kết nối lấy chúng hoặc thao tác chúng vv.

Tóm tắt: Mỗi thao tác này đang được thực hiện riêng lẻ ở một quy trình khác . Đó là những gì làm cho nó "đơn giản". Yêu cầu thêm thông tin nếu bạn muốn cụ thể hơn.

+0

"Câu trả lời rõ ràng nhất, là có được một cuốn sách hay về ngăn xếp LAMP." Bạn có biết cuốn sách như vậy không? –

+0

Tôi luôn khuyên bạn nên Đầu tiên: http://www.headfirstlabs.com/books/hfphp/ –

+0

Tôi muốn nói về * nội bộ * của ngăn xếp LAMP, không phải cách sử dụng PHP/MySQL. –

3

Tôi đã tìm thấy trang web có ít nhất một phần nội dung từ sách Lập trình PHP nâng cao của George Schlossnagle.

Trang web được đặt tại: http://php.find-info.ru/php/016/toc.html. Cụ thể, phần trên The PHP Request Life Cycle chứa rất nhiều chi tiết về nitty-gritty, bao gồm một số mã nguồn và sơ đồ.

KHUYẾN CÁO: IANAL, nhưng xem xét cuốn sách vẫn là listed on Amazon, nội dung có thể được liên kết ở trên sẽ phá vỡ tất cả các loại mã, quy tắc và/hoặc luật. Nó không phải là ý định của tôi để tăng sinh hoặc cho phép các tài liệu bất hợp pháp hoặc vi phạm bản quyền, vì vậy nếu đúng như vậy, hãy xóa các liên kết đã nói.

Các vấn đề liên quan