การสร้างหน้า html ด้วย PHP อะไรคือความแตกต่างระหว่างไฟล์ php และไฟล์ html สิ่งที่คุณต้องรู้
คาเมรอน แลร์ด
PHP ไม่รองรับการประมวลผลสตรีม แอปพลิเคชัน PHP สามารถทำงานหลายอย่างพร้อมกันได้ ซึ่งตรงกันข้ามกับความคิดเห็นของนักพัฒนา PHP ส่วนใหญ่ที่ฉันพูดด้วย เริ่มต้นด้วยการค้นหาว่า "มัลติทาสก์" และ "เธรด" มีความหมายอย่างไรสำหรับการเขียนโปรแกรม PHP
ความหลากหลายของความเท่าเทียม
อันดับแรก เราแยกกรณีที่อยู่นอกกระแสหลักของหัวข้อหลัก PHP มีความสัมพันธ์ที่ซับซ้อนกับการทำงานหลายอย่างพร้อมกันหรือการทำงานพร้อมกัน ที่ระดับบนสุด PHP มีส่วนเกี่ยวข้องกับการทำงานหลายอย่างพร้อมกัน - การติดตั้ง PHP มาตรฐานบนเซิร์ฟเวอร์ (เช่น โมดูล Apache) จะถูกใช้งานแบบมัลติทาสก์ กล่าวคือ แอปพลิเคชันไคลเอนต์หลายตัว (เว็บเบราว์เซอร์) สามารถขอหน้า PHP เดียวกันได้พร้อมกัน และเว็บเซิร์ฟเวอร์จะส่งคืนให้ทุกคนพร้อมกันไม่มากก็น้อย
หน้าเว็บหนึ่งไม่ได้บล็อกการส่งข้อมูลของอีกหน้าเว็บหนึ่ง แม้ว่าอาจรบกวนกันเล็กน้อยเมื่อต้องจัดการกับทรัพยากรที่จำกัด เช่น หน่วยความจำของเซิร์ฟเวอร์หรือแบนด์วิดท์เครือข่าย ดังนั้น ความต้องการของระบบสำหรับการทำงานพร้อมกันอาจอนุญาตให้ใช้โซลูชันที่ใช้ PHP ได้ ในแง่ของการใช้งาน PHP ถือเว็บเซิร์ฟเวอร์ที่รับผิดชอบการทำงานพร้อมกัน
ความขนานฝั่งไคลเอ็นต์ที่เรียกว่า Ajax ยังได้รับความสนใจจากนักพัฒนาในช่วงไม่กี่ปีที่ผ่านมา แม้ว่าความหมายของ Ajax จะค่อนข้างคลุมเครือ แต่แง่มุมหนึ่งของเทคโนโลยีนี้คือเบราว์เซอร์สามารถทำการคำนวณได้ในเวลาเดียวกัน และยังคงมีความละเอียดอ่อนต่อการกระทำของผู้ใช้ เช่น การเลือกเมนู มันเป็นการทำงานหลายอย่างจริงๆ Ajax ที่เข้ารหัสด้วย PHP ทำสิ่งนี้ แต่ไม่มี PHP เกี่ยวข้องเป็นพิเศษ เฟรมเวิร์ก Ajax สำหรับภาษาอื่นทำงานในลักษณะเดียวกัน
ตัวอย่างที่สามของการทำงานพร้อมกันที่ทำให้เกิดรอยขีดข่วนบนพื้นผิวของ PHP คือ PHP / TK PHP / TK เป็นส่วนขยายของ PHP ที่ให้การเชื่อมต่อ Graphical User Interface (GUI) แบบพกพากับแกน PHP PHP / TK ให้คุณสร้างแอปพลิเคชั่น GUI บนเดสก์ท็อปที่เขียนด้วย PHP แง่มุมที่ขับเคลื่อนด้วยเหตุการณ์จำลองรูปแบบของการทำงานพร้อมกันที่เรียนรู้ได้ง่ายและมีโอกาสเกิดข้อผิดพลาดน้อยกว่าการทำงานกับเธรด อีกครั้ง การทำงานพร้อมกันนั้น "สืบทอด" จากเทคโนโลยีเสริมแทนที่จะเป็นฟังก์ชันพื้นฐานของ PHP
มีการทดลองหลายครั้งเพื่อเพิ่มการสนับสนุนเธรดให้กับ PHP เอง เท่าที่ฉันรู้ไม่มีใครประสบความสำเร็จ อย่างไรก็ตาม กรอบงาน Ajax และ PHP / TK ที่ขับเคลื่อนด้วยเหตุการณ์แสดงให้เห็นว่าเหตุการณ์สามารถแสดงความพร้อมกันของ PHP ได้ดีกว่าที่เธรดสามารถทำได้ PHP V5 พิสูจน์ได้
PHP V5 เสนอ stream_select ()
ใน PHP V4 มาตรฐานและรุ่นก่อนหน้า งานทั้งหมดของแอปพลิเคชัน PHP จะต้องทำตามลำดับ หากโปรแกรมต้องการดึงราคาของสินค้าจากเว็บไซต์เชิงพาณิชย์สองแห่ง เช่น ขอราคาแรก รอการตอบกลับ ขอราคาที่สอง และรออีกครั้ง
จะเกิดอะไรขึ้นหากโปรแกรมสามารถทำงานหลายอย่างพร้อมกันได้? มันจะแล้วเสร็จในเวลาเพียงเศษเสี้ยวของเวลาที่จำเป็นสำหรับการทำงานที่สอดคล้องกัน
ตัวอย่างแรก
ฟังก์ชัน stream_select ใหม่ พร้อมด้วยเพื่อนอีกหลายคน มอบความสามารถนี้ พิจารณาตัวอย่างต่อไปนี้:
0) ($ s = stream_socket_client ("phaseit.net:80", $ errno, $ errstr, $ timeout, STREAM_CLIENT_ASYNC_CONNECT / STREAM_CLIENT_CONNECT); ถ้า ($ s) ($ ซ็อกเก็ต [$ id ++] = $ s; $ http_message = " GET / สาธิต / ล่าช้า? Delay = ". $ Delay." HTTP / 1.0 \ r \ nHost: phaseit.net \ r \ n \ r \ n "; fwrite ($ s, $ http_message);) อื่น ๆ (echo " สตรีม ". $ id." ไม่สามารถเปิดได้อย่างถูกต้อง ";) $ ล่าช้า - = 3;) ในขณะที่ (จำนวน ($ ซ็อกเก็ต)) ($ read = $ sockets; stream_select ($ อ่าน $ w = null, $ e = null , $ หมดเวลา); ถ้า (นับ ($ อ่าน)) (/ * stream_select มักจะสับเปลี่ยน $ อ่าน ดังนั้นเราต้องหาว่าซ็อกเก็ตใดที่อ่านจาก * / foreach ($ อ่านเป็น $ r) ($ id = array_search ($ r, $ sockets); $ data = fread ($ r, $ convenient_read_block); / * ซ็อกเก็ตสามารถอ่านได้เพราะมีข้อมูลที่จะอ่าน OR เนื่องจากอยู่ในสถานะ EOF * / if (strlen ($ data) = = 0) (echo "Stream". $ Id. "Closes at". Date ("h: i: s") ". \ N"; fclose ($ r); unset ($ sockets [ $ id]); ) อื่น ($ ผล [$ id]. = $ data;))) อื่น ๆ (/ * Ty maut หมายความว่าเธรด * ทั้งหมด * ไม่รอการตอบกลับ * / echo "หมดเวลา! \ n"; หยุดพัก; ))?> |
หากคุณเรียกใช้โปรแกรมนี้ คุณจะเห็นข้อมูลที่คล้ายกับต่อไปนี้:
โปรแกรมเริ่มเวลา 02:38:50 น. สตรีม 4 ปิดเวลา 02:38:53 น. สตรีม 3 ปิดเวลา 02:38:56 น. สตรีม 2 ปิดเวลา 02:38:59 น. สตรีม 1 ปิดเวลา 02:39:02 น. สตรีม 0 ปิดเวลา 02:39:05 น. |
สิ่งสำคัญคือต้องเข้าใจว่าเกิดอะไรขึ้นที่นี่ ในระดับสูง โปรแกรมแรกส่งคำขอ HTTP หลายรายการและรับหน้าที่เว็บเซิร์ฟเวอร์ส่งไป ในขณะที่แอปพลิเคชันจริงอาจขอเว็บเซิร์ฟเวอร์ที่แตกต่างกันหลายตัว (อาจเป็น google.com, yahoo.com, ask.com เป็นต้น) ตัวอย่างนี้ส่งคำขอทั้งหมดไปยังเซิร์ฟเวอร์องค์กรของเราที่ Phaseit.net เพียงเพื่อลดความซับซ้อน ...
หน้าเว็บที่ร้องขอส่งคืนผลลัพธ์หลังจากตัวแปรหน่วงเวลาที่แสดงด้านล่าง หากโปรแกรมดำเนินการตามคำขอตามลำดับ จะใช้เวลาประมาณ 15 + 12 + 9 + 6 + 3 (45) วินาที ดังที่แสดงในรายการที่ 2 จริง ๆ แล้วใช้เวลาในการดำเนินการ 15 วินาที ผลผลิตสามเท่าเป็นผลลัพธ์ที่ยอดเยี่ยม
สิ่งนี้เกิดขึ้นได้ด้วย stream_select ซึ่งเป็นฟีเจอร์ใหม่ใน PHP V5 คำขอเริ่มต้นตามปกติ - โดยเปิด stream_socket_clients หลายรายการและเขียน GET ให้แต่ละรายการ ซึ่งสอดคล้องกับ http://phaseit.net/demonstration/delay?delay=$DELAY เมื่อคุณขอ URL นี้ในเบราว์เซอร์ของคุณ คุณควรเห็น:
แม้ว่าการใช้งานเฉพาะในรายการ 3 นั้นมีไว้สำหรับ UNIX® แต่สคริปต์เกือบทั้งหมดในบทความนี้ก็ใช้ได้กับการติดตั้ง PHP บน Windows® (โดยเฉพาะหลัง Windows 98) หรือ UNIX ด้วยเช่นกัน โดยเฉพาะอย่างยิ่ง คุณสามารถทำงานกับ Listing 1 บนระบบปฏิบัติการใดก็ได้ Linux® และ Mac OS X เป็นรสชาติของ UNIX และโค้ดทั้งหมดที่นี่จะใช้ได้กับทั้งสองระบบ
คำขอเซิร์ฟเวอร์แฝงจะทำในลำดับต่อไปนี้:
ล่าช้า = 15 ล่าช้า = 12 ล่าช้า = 9 ล่าช้า = 6 ล่าช้า = 3 |
เป้าหมายของ stream_select คือการได้ผลลัพธ์โดยเร็วที่สุด ในกรณีนี้ ลำดับของความล่าช้าจะตรงกันข้ามกับลำดับที่มีการร้องขอ หลังจาก 3 วินาที หน้าแรกก็พร้อมที่จะอ่าน ส่วนนี้ของโปรแกรมเป็นโค้ด PHP ปกติ - ในกรณีนี้คือ fread เช่นเดียวกับในโปรแกรม PHP อื่น การอ่านสามารถทำได้ด้วย fgets
การประมวลผลยังคงดำเนินต่อไปในลักษณะเดียวกัน โปรแกรมจะบล็อกที่ stream_select จนกว่าข้อมูลจะพร้อม สิ่งสำคัญคือมันเริ่มอ่านทันทีที่การเชื่อมต่อมีข้อมูลในลำดับใดก็ได้ นี่คือวิธีที่โปรแกรมใช้งานมัลติทาสก์หรือการประมวลผลแบบคู่ขนานกับผลลัพธ์ของการสืบค้นหลายรายการ
โปรดทราบว่าไม่มีการโหลด CPU เพิ่มเติมในคอมพิวเตอร์โฮสต์ ไม่ใช่เรื่องแปลกที่โปรแกรมเครือข่ายจะดำเนินการ fread ในลักษณะนี้ในไม่ช้าเพื่อใช้ CPU 100% นี่ไม่ใช่กรณี เนื่องจาก stream_select มีคุณสมบัติที่ต้องการและตอบสนองทันทีที่อ่านได้ แต่ยังโหลด CPU ให้น้อยที่สุดในโหมดสแตนด์บายระหว่างการอ่าน
สิ่งที่คุณต้องรู้เกี่ยวกับ stream_select ()
การเขียนโปรแกรมตามเหตุการณ์นี้ไม่ใช่เรื่องเล็กน้อย แม้ว่า Listing 1 จะถูกลดให้เป็น Essentials แต่การเข้ารหัสใดๆ ที่อิงจากการเรียกกลับหรือการประสานงาน (ซึ่งจำเป็นในแอปพลิเคชันแบบมัลติทาสก์) จะคุ้นเคยน้อยกว่าลำดับขั้นตอนง่ายๆ ในกรณีนี้ ปัญหาที่ใหญ่ที่สุดอยู่ที่ $ read array โปรดทราบว่านี่คือลิงค์ stream_select ส่งคืนข้อมูลสำคัญโดยแก้ไขเนื้อหาของ $ read เช่นเดียวกับพอยน์เตอร์มีชื่อเสียงว่าเป็นแหล่งของจุดบกพร่องใน C อยู่เสมอ การอ้างอิงดูเหมือนจะเป็นส่วนที่ยากที่สุดของ PHP สำหรับโปรแกรมเมอร์
เทคนิคการสืบค้นนี้สามารถใช้ได้จากเว็บไซต์ภายนอกจำนวนเท่าใดก็ได้ เพื่อให้มั่นใจว่าโปรแกรมจะได้รับผลลัพธ์แต่ละรายการโดยเร็วที่สุดโดยไม่ต้องรอคำขออื่นๆ อันที่จริง เทคนิคนี้ทำงานอย่างถูกต้องกับการเชื่อมต่อ TCP / IP ใดๆ ไม่ใช่แค่เว็บ (พอร์ต 80) ซึ่งโดยหลักการแล้ว คุณสามารถควบคุมการแยกข้อมูล LDAP, การส่ง SMTP, คำขอ SOAP เป็นต้น
แต่นั่นไม่ใช่ทั้งหมด PHP V5 จัดการการเชื่อมต่อต่างๆ เป็น "สตรีม" แทนที่จะเป็นซ็อกเก็ตธรรมดา ไลบรารี URL ของไคลเอ็นต์ PHP (CURL) รองรับใบรับรอง HTTPS, การอัปโหลด FTP ขาออก, คุกกี้ และอื่นๆ (CURL อนุญาตให้แอปพลิเคชัน PHP ใช้โปรโตคอลที่แตกต่างกันเพื่อเชื่อมต่อกับเซิร์ฟเวอร์) เนื่องจาก CURL มีอินเทอร์เฟซสำหรับสตรีม การเชื่อมต่อจึงโปร่งใสจากมุมมองของโปรแกรม ส่วนถัดไปจะอธิบายวิธีที่ stream_select มัลติเพล็กซ์ทำการคำนวณในเครื่อง
มีข้อแม้บางประการเกี่ยวกับ stream_select ฟังก์ชันนี้ไม่ได้รับการบันทึก ดังนั้นจึงไม่ครอบคลุมถึงแม้ในหนังสือ PHP ใหม่ ตัวอย่างโค้ดที่มีอยู่บนเว็บใช้ไม่ได้ผลหรือไม่สามารถเข้าใจได้ อาร์กิวเมนต์ที่สองและสามของ stream_select ซึ่งควบคุมช่องเขียนและช่องยกเว้นที่สอดคล้องกับช่องการอ่านในรายการ 1 แทบจะเป็นโมฆะ การเลือกช่องเหล่านี้ถือเป็นความผิดพลาดโดยมีข้อยกเว้นบางประการ หากคุณไม่มีประสบการณ์เพียงพอ ให้ใช้ตัวเลือกที่อธิบายมาอย่างดีเท่านั้น
นอกจากนี้ stream_select ดูเหมือนจะมีปัญหา อย่างน้อยใน PHP V5.1.2 ที่สำคัญที่สุด ค่าส่งคืนของฟังก์ชันไม่สามารถเชื่อถือได้ แม้ว่าฉันจะยังไม่ได้ดีบักการใช้งาน แต่ประสบการณ์ของฉันได้แสดงให้เห็นว่าสามารถทดสอบจำนวนได้อย่างปลอดภัย (อ่าน $) เช่นเดียวกับในรายการ 1 แต่นั่นใช้ไม่ได้กับค่าส่งคืนของ stream_select เอง แม้จะมีเอกสารประกอบอย่างเป็นทางการก็ตาม
PHP Local Concurrency
ตัวอย่างและการสนทนาส่วนใหญ่ข้างต้นเน้นที่วิธีจัดการทรัพยากรระยะไกลหลายรายการพร้อมกันและได้ผลลัพธ์ตามที่ปรากฏ แทนที่จะรอให้แต่ละรายการได้รับการประมวลผลตามลำดับของคำขอเดิม นี่เป็นแอปพลิเคชั่นที่สำคัญของ PHP ที่ทำงานพร้อมกันอย่างไม่ต้องสงสัย บางครั้งแอปพลิเคชันจริงสามารถเร่งความเร็วได้สิบเท่าหรือมากกว่านั้น
เกิดอะไรขึ้นถ้าการชะลอตัวเกิดขึ้นใกล้เข้ามา? มีวิธีเพิ่มความเร็วในการรับผลลัพธ์ใน PHP เมื่อประมวลผลในเครื่องหรือไม่? มีไม่กี่อย่าง สิ่งเหล่านี้อาจเป็นที่รู้จักน้อยกว่าวิธีที่เน้นซ็อกเก็ตในรายการ 1 มีเหตุผลหลายประการ ได้แก่:
- ส่วนใหญ่หน้า PHP จะเร็วพอ ประสิทธิภาพที่ดีขึ้นอาจเป็นข้อได้เปรียบ แต่ไม่เพียงพอที่จะพิสูจน์การลงทุนในโค้ดใหม่
- การใช้ PHP ในหน้าเว็บอาจทำให้การเร่งโค้ดบางส่วนไม่เกี่ยวข้อง การแจกจ่ายการคำนวณซ้ำเพื่อให้ได้ผลลัพธ์ระดับกลางเร็วขึ้นนั้นไม่เกี่ยวข้องเมื่อเกณฑ์เดียวคือความเร็วในการส่งหน้าเว็บโดยรวม
- ปัญหาคอขวดในเครื่องบางส่วนถูกควบคุมโดย PHP ผู้ใช้อาจบ่นว่าต้องใช้เวลา 8 วินาทีในการดึงข้อมูลบัญชี แต่นั่นอาจเป็นการจำกัดการประมวลผลของฐานข้อมูลหรือทรัพยากรอื่นๆ ภายนอก PHP แม้ว่าคุณจะลดเวลาในการประมวลผล PHP เป็นศูนย์ แต่ก็ยังต้องใช้เวลามากกว่า 7 วินาทีในการค้นหา
- แม้แต่ข้อจำกัดที่น้อยลงก็ทำให้การประมวลผลแบบคู่ขนานกัน สมมติว่าหน้าใดหน้าหนึ่งคำนวณราคาแนะนำสำหรับหุ้นสามัญจดทะเบียน และการคำนวณนั้นซับซ้อนเพียงพอและใช้เวลาหลายวินาทีกว่าจะเสร็จสมบูรณ์ การคำนวณสามารถเป็นแบบต่อเนื่องได้ ไม่มีวิธีที่ชัดเจนในการเผยแพร่เพื่อ "การทำงานร่วมกัน"
- โปรแกรมเมอร์ PHP ไม่กี่คนที่เข้าใจศักยภาพของ PHP สำหรับการประมวลผลแบบขนาน เมื่อพูดถึงความเป็นไปได้ของการทำให้ขนานกัน โปรแกรมเมอร์ส่วนใหญ่ที่ฉันพบเพียงแค่ยกวลี "PHP ไม่ทำงานกับเธรด" และกลับไปที่โมเดลการคำนวณที่กำหนดไว้
บางครั้งคุณสามารถทำได้ดีกว่า สมมติว่าหน้า PHP ต้องคำนวณราคาหุ้นสองราคา บางทีเปรียบเทียบ และโฮสต์คอมพิวเตอร์ที่ใช้เป็นแบบมัลติโปรเซสเซอร์ ในกรณีนี้ เราสามารถเพิ่มประสิทธิภาพได้เกือบสองเท่าโดยกำหนดการคำนวณที่ทำงานเป็นเวลานานสองชุดแยกกันให้กับโปรเซสเซอร์ที่ต่างกัน
ในโลกของการคำนวณ PHP ตัวอย่างดังกล่าวหาได้ยาก อย่างไรก็ตาม เนื่องจากฉันไม่พบคำอธิบายที่แน่ชัดในที่อื่น ฉันต้องการยกตัวอย่างของการเร่งความเร็วดังกล่าวที่นี่
array ("pipe", "r"), 1 => array ("pipe", "w"), 2 => array ("file", $ error_log, "w")); $ cmd = "นอน" $ ล่าช้า "; echo" เสร็จสิ้นโดยมีดีเลย์เป็น ". $ delay." "."; $ จัดการ [$ id] = proc_open ($ cmd, $ descriptorspec, $ pips); $ สตรีม [$ id] = $ ท่อ; $ all_pipes [$ id] = $ ท่อ; $ ล่าช้า - = 2; ) ในขณะที่ (นับ ($ สตรีม)) ($ read = $ streams; stream_select ($ read, $ w = null, $ e = null, $ timeout); foreach ($ อ่านเป็น $ r) ($ id = array_search ($ r, $ streams); echo stream_get_contents ($ all_pipes [$ id]); if (feof ($ r)) (fclose ($ all_pipes [$ id]); fclose ($ all_pipes [$ id]); $ return_value = proc_close ($ handles [$ id]); unset ($ streams [$ id]);)))?> |
โปรแกรมนี้จะแสดงข้อมูลดังต่อไปนี้:
โปรแกรมเริ่มเวลา 10:28:41 น. เสร็จสิ้นด้วยความล่าช้า 1 เสร็จสิ้นด้วยความล่าช้า 3 |
แนวคิดก็คือว่า PHP เริ่มต้นกระบวนการย่อยที่เป็นอิสระสองกระบวนการ ได้รับข้อมูลจากกระบวนการแรก และจากนั้นจากกระบวนการที่สอง แม้ว่าขั้นตอนหลังจะเริ่มขึ้นก่อนหน้านี้ หากคอมพิวเตอร์แม่ข่ายเป็นมัลติโปรเซสเซอร์และระบบปฏิบัติการได้รับการกำหนดค่าอย่างถูกต้อง จะเป็นการดูแลในการกำหนดโปรแกรมย่อยต่างๆ ให้กับโปรเซสเซอร์ที่แตกต่างกัน นี่เป็นวิธีหนึ่งในการใช้ประโยชน์จากเครื่องประมวลผลหลายตัวของ PHP
สรุป
PHP รองรับการทำงานหลายอย่างพร้อมกัน PHP ไม่สนับสนุนการประมวลผลแบบสตรีมในลักษณะที่ภาษาโปรแกรมอื่นๆ เช่น Java หรือ C ++ ทำ แต่ตัวอย่างข้างต้นแสดงให้เห็นว่า PHP มีศักยภาพในการเร่งความเร็วได้สูงกว่าที่คนส่วนใหญ่คิด
ดังนั้น เพื่อน ๆ ถ้าคุณได้เรียนบทเรียนนี้แล้ว คุณก็สามารถติดตั้งเซิร์ฟเวอร์ในเครื่องหรือซื้อโฮสติ้งที่คุณสามารถใช้งาน PHP ได้ ขอแสดงความยินดี - นี่เป็นขั้นตอนใหญ่!
ฉันจะพูดสั้น ๆ เกี่ยวกับ PHP - ภาษาการเขียนโปรแกรมนี้ใช้ทั่วโลกและคุณสามารถสร้างไซต์ที่มีความซับซ้อนทุกระดับตั้งแต่ไซต์นามบัตรไปจนถึงพอร์ทัลขนาดใหญ่ ฉันคิดว่ามันไม่ใช่ความลับอีกต่อไปสำหรับหลาย ๆ คนแล้วที่เครือข่ายโซเชียลที่ใหญ่ที่สุด facebook.com(ตั้งแต่เริ่มต้นจนถึง php) และ vk.com(เอ็นจิ้น php) เขียนด้วย PHP ดังนั้นเราจึงสรุปและเริ่มทำงาน!)
รหัสทำงานอย่างไร
รหัส PHP ประมวลผลทางฝั่งเซิร์ฟเวอร์... นั่นคือไม่มีหน้าพร้อม ตัวอย่างเช่น ในโค้ด มีคำสั่งให้รวบรวมข้อมูลเกี่ยวกับจำนวนผู้ใช้ที่ลงทะเบียนบนเว็บไซต์ในปัจจุบัน ผู้เยี่ยมชมเว็บไซต์คลิกที่ลิงค์ ผู้ใช้ทั้งหมด... เขาต้องการที่จะได้รับ ข้อมูลแบบไดนามิกนั่นคือสิ่งที่เปลี่ยนแปลงตลอดเวลา หลังจากการนับบนเซิร์ฟเวอร์เสร็จสิ้น ข้อมูลจะมาจากเซิร์ฟเวอร์ในรูปแบบของโค้ด HTML ที่สร้างขึ้นของหน้าพร้อมจำนวนผู้ใช้ เป็นผลให้หลังจากคลิกคำขอบนลิงค์ผู้ใช้จะได้รับหน้า หากคุณดูโค้ดของหน้าผลลัพธ์ คุณจะเห็นเฉพาะ HTML และโค้ด PHP จะไม่สามารถดูได้ โดยทั่วไปแล้ว PHP เป็นคำสั่งสำหรับเซิร์ฟเวอร์เกี่ยวกับวิธีการสร้างบล็อกโค้ด PHP มีลักษณะอย่างไรและจะแทรกได้ที่ไหน
สามารถฝังโค้ด PHP ลงใน HTML ได้โดยตรง โค้ด PHP ถูกฝังในหน้า HTML โดยใช้วงเล็บเหลี่ยมและเครื่องหมายคำถาม อย่างไรก็ตาม คุณสามารถจำกัดตัวเองให้อยู่ในวงเล็บด้วยเครื่องหมายคำถาม код; ?> ... คุณจะต้องเปลี่ยนนามสกุลไฟล์เท่านั้น ตัวอย่างเช่น จาก .htmlบน .phpรหัส PHP(ไฟล์ index.php)
echo "สวัสดีชาวโลก!";
?>