>> СПІКЕР 1: Гаразд, так, що це ви конкретно потрібно зробити?
Ну, виявляється, є всього чотири функції
що вам потрібно, щоб реалізувати Функціональність якого є
невід'ємною належне Робота веб-сервера,
але якого всі поведінка дуже вузько
визначається, таким чином, що вони тільки зробити досить багато одну річ.
Перше, що ви збираєтеся потрібно зробити це реалізувати,
у відповідності зі специфікацією, Функція перегляду.
Це досить проста функція в кінець, який приймає в якості аргументу
незалежно від шляху до файлу що користувач хоче, щоб запросити,
і ви повинні відповідати з так званий тип MIME, або Content-Type,
з цього файлу.
Наприклад, якщо це файл, як, привіт точка
HTML ви збираєтеся реагувати на MIME з тип цитатою кінець цитати текст слеш HTML.
>> Або, якщо це зображення, ви можете відповісти зображення точка слеш
Мить або зображення JPEG слеш.
Дивіться специфікації для різних формати файлів необхідно виявити.
Але це дійсно зводиться до приймаючи подивитися на шляху, що ви минуле,
і, дивлячись на його файлі розширення, останні декілька символів
після періоду задній або точкою.
Таким чином, ми залишимо його для вас з деякими з натяків в описі
щоб з'ясувати, як саме, щоб знайти що точка і розширення файлу
так що ви можете зробити відображення одного до іншого.
>> Потім функція розбору.
Так що це одне трохи більш активну участь в тому, що
Ви повинні взяти, що Аргумент [нерозбірливо],
це повторний над ним, характер для характеру, або рядок по рядку,
для того, щоб переконатися, що що він відповідає саме
формальне визначення, що спочатку Рядок запиту, відповідно до специфікації.
І ви повинні завантажити в абсолютній Шлях, який підрядок, що представляє
щось на зразок, слеш привіт точка HTML.
Тим часом, при необхідності, після чого Шлях може бути знак питання
а потім рядок запиту як, д дорівнює кішок,
або д дорівнює кішки амперсанд, і потім ще значення ключа пари.
Таким чином, ви будете потребувати, щоб переступити цих символів,
а також, до до перший простір, з метою
створити рядок, яка зберігає всередині нього сама рядок запиту.
Далі, ви збираєтеся реалізувати функцію навантаження.
Так що виходить, якщо ви дивитеся через вихідний код, а специфікація спрямовує,
функція навантаження використовується в двох місцях.
Це або використовуваний для завантаження Вихід з PHP інтерпретатора.
І ми написали всі код обробки PHP,
але це потрібно використовувати функцію під назвою
навантаження, що істотно читає всі з байт виходу інтерпретатора РНР
у великому масиві.
>> Це та ж функція навантаження також використовується для завантаження
в пам'ять всіх байти з файлу начебто, Мить, або JPEG, або точка HTML
Файл, що користувач запросив.
Таким чином, ви повинні будете використовувати деякі прийоми і інструменти з проблеми набір 4 в файлі IO,
але ви повинні знайти, що відносно знайомі і в хороший спосіб, сподіваюся,
зв'язувати разом нову мережу матеріал зі старою файловою IO речі.
>> Нарешті, в індексах Функція, все, що вам потрібно зробити,
це вирішити, чи варто їсти ефективно існує який-небудь файл
званий індекс точка HTML, або індекс точка PHP, всередині каталогу, шлях якого вам
пішли в минуле.
Верх це означає, що, якщо користувач робить запит на каталог,
ми не просто покажемо йому або її вміст цього каталогу,
ми буквально показати їм індексу точка HTML, або індекс точка PHP за замовчуванням.
Але це буде ліворуч вас з'ясувати, використовуючи деякі з натяків
у вихідному коді, що ми вже дав вам,
як ви можете насправді перевірити Чи існує певний файл
в поточному каталозі, так що Ви можете повернути правильну відповідь.
>> Так, в кінці є щодо кілька байтів
що вам потрібно, щоб вивезти з Проблема встановити для реалізації сервера
неповне функціональність.
Але, безумовно, переконайтеся, що ви обернути Ваш розум навколо стільки коду
як ви можете, приймаючи комфорт в тому, що ви не
потрібно зрозуміти всі з низький рівень мережевий код, все
найнижчою файлів рівень IO коду.
Дійсно, що ми робимо З цією проблемою набору
є синтез останніх декількох проблему набори, представляючи трохи WebLogic,
і концепції мереж, так що в кінцевому підсумку ви
побудувати щось, що дійсно дуже Цікаво, насправді досить потужний,
але як і раніше за допомогою ж блоки,
що ми використовували протягом деякого часу.