09/10/2018, 23:44

Hỏi về cách hoạt động của PHP

Chào các bạn, mình mới làm quen với PHP, xin hỏi vài câu về PHP, nhờ các bạn giải thích hộ :

1. PHP là ngôn ngữ thông dịch ? Như vậy nếu có 1 request tới 1 trang php thì trang này được php engine thông dịch ra html ? 1000 request thì thông dịch 1000 lần ?
2. Mã php là file text ko compile ra mã nhị phân ? Nếu vậy có thể download về được không ? Có thể complile file php ra mã máy được không ?
3. 1 trang php có thể nén lại như file .war(Java) hoặc .dll(.NET) để deploy được không ?
4. Zend Engine là gì ? opcode là gì ? Zend optimizer là gì ?
changtraingheo viết 01:46 ngày 10/10/2018
1. PHP là ngôn ngữ thông dịch ? Như vậy nếu có 1 request tới 1 trang php thì trang này được php engine thông dịch ra html ? 1000 request thì thông dịch 1000 lần ?
Trả Lời: ờ
2. Mã php là file text ko compile ra mã nhị phân ? Nếu vậy có thể download về được không ?
- Không, vì khi bạn chạy trực tiếp một file php, thì server sẽ biên dịch file php này ra, rồi trả về dạng đơn thuần HTML, và kết quả bạn nhận được là file HTML
Có thể complile file php ra mã máy được không ?
- Không
3. 1 trang php có thể nén lại như file .war(Java) hoặc .dll(.NET) để deploy được không ?
- hình như không
4. mấy cái đó là zend phát triển ra, giống như zend framework vậy
conmalele viết 01:48 ngày 10/10/2018
@: changtraingheoẶc, tư vân thế kia thì có mà chết, thiếu căn bản trầm trọng

Zend Engine là phần lõi của PHP chứ không giống như Zend Framework, đã là Zend rồi thì ai mà không biết do Zend làm ra
opcode là gì? : http://en.wikipedia.org/wiki/Opcode
Zend optimizer : Chủ yếu là để chạy những file đã được Zend encode. Còn muốn tối ưu hơn thì dùng Zend Peformance Suite tối ưu hóa mã, nén nội dung, quản lý cache thông minh, khắc phục cho câu hỏi 3. Còn không thì các ứng dụng free, open source cũng có 2 cái

Nếu muốn biết thêm thì hãy hỏi pcdinh, nhớ chuẩn bị tinh thần để đọc một bài viết dài
mr47 viết 01:44 ngày 10/10/2018
Đúng là 1000 request thì sẽ chạy script một 1000 lần. Nhưng thông dịch bao nhiêu lần thì còn tùy vào việc bạn có cache opcode hay không.

PHP Engine dịch mã PHP thành opcode và chạy opcode đó. Nếu cache opcode đó lại thì những lần sau không cần thông dịch nữa, sẽ giúp ứng dụng PHP chạy nhanh hơn.

Mã PHP có thể download về được nếu nó nằm trong webroot và chưa có một sự "móc nối" nào giữa PHP engine và Apache. Khi "móc nối" PHP vào Apache, ví dụ như cài PHP như là một module của Apache, thì khi request được gửi đến, Apache sẽ kiểm tra xem nó có request đến một file PHP hay không. Nếu có thì nó sẽ gọi PHP engine, thực thi mã PHP và gửi kết quả về client, thay vì cho phép download file PHP đó.
pcdinh viết 01:58 ngày 10/10/2018
Đ. ko trả lời dài được. Đang chạy theo deadline chết thôi.

1. PHP là ngôn ngữ thông dịch? Như vậy nếu có 1 request tới 1 trang php thì trang này được php engine thông dịch ra html ? 1000 request thì thông dịch 1000 lần ?

A: Trên lý thuyết thì là đúng. Đối với newbie thì thực tế vẫn đúng. Tuy nhiên, có thể biến PHP thành 1 ngôn ngữ biên dịch kiểu Java hay các ngôn ngữ managed code khác bằng cách tác động ở thời gian biên dịch dùng bcompiler hoặc thời gian runtime dùng các công cụ opcode cache như XCache, APC... trong đó opcode cache thường được sử dụng ở các site có traffic cỡ lớn. bcompiler đem lại tốc độ rất nhanh nhưng nó lại yêu cầu đổi tên file.

2. Mã php là file text ko compile ra mã nhị phân ? Nếu vậy có thể download về được không ? Có thể complile file php ra mã máy được không ?

A. Có nhiều tool cho phép dịch PHP ra mã máy trên Windows. Trên Unix dùng bcompiler và 1 số tool khác. Về nguyên tắc thì khi can thiệp ở thời gian biên dịch thì opcode có thể mang đi mang về được.
3. 1 trang php có thể nén lại như file .war(Java) hoặc .dll(.NET) để deploy được không ?

A. PHP có chuẩn phar như một binary extension nằm trong nhân của PHP 5.2.4. Kể từ bản PHP 5.1.0, bản PEAR phân phối theo PHP đã sử dụng .phar

4. Zend Engine là gì

A. Là kernel của PHP, xử lý các công việc mức compiler và mức engine như bộ nhớ, đánh giá tài nguyên, giao tiếp với hệ điều hành, thực hiện các jump trên executor.....

? opcode là gì ?

Là managed code của PHP như bytecode của Java, hay IL của .NET

Zend optimizer là gì ?
Là engine hook vào giữa quá trình chuyển đổi PHP code thành opcode nhằm thay đổi cơ chế sinh opcode thông thường để tối ưu hóa quá trình sinh opcode. Khi các instruction được giảm thiểu và tối ưu, opcode sẽ chạy nhanh hơn và ít tốn tài nguyên hơn.
langbian viết 02:00 ngày 10/10/2018
Vâng, cám ơn các anh đã giải thích dùm em ! Sáng giờ không lên được để reply ! Hic
venede viết 01:46 ngày 10/10/2018
Zend đang cho ra mắt Webbinar - Web sevices in PHP
shuto_uke viết 01:45 ngày 10/10/2018
Mọi người cho mình hỏi là hiện máy mình có cài đặt 2 bản PHP4 và PHP5. Liệu khi mình cài Zen Opt cho thằng PHP này thì có ảnh hưởng đến thằng còn lại không nhỉ ? Mình dùng Win Server 2003
Cảm ơn nhiều
hoadaquy viết 01:49 ngày 10/10/2018
ban nao giup minh so sanh 3 ngon ngu PHP, ASP, JSP
loihuasaobang91 viết 01:54 ngày 10/10/2018
Em hỏi câu này hết sức sơ đẳng: php5 dùng để làm gì,có phải để soạn thảo ko? Em dùng notepad soạn thảo
Bài liên quan
0