jojo, another http server written in PHP 8.0

Overview

جوجو | jojo

جوجو، وب‌سروری در ابعاد جوجه برای کارهای کوچک

داستان نوشتن جوجو

وب‌سروری که تنظیمات مودم TP-link TD-8811 توی اتاقم رو serve میکنه اسمش micro_httpd بود. از سر بیکاری اسم وب‌سرورش رو سرچ کردم و به این مخزن رسیدم. کدش برام جالب بود و به سرم زد که برای مرور کردن و یادگرفتن چیزهای جدید از مهندسی کامپیوتر یک وب‌سرور ساده دیگه شبیه micro_httpd خودم از صفر بنویسم و چیزهایی که یاد میگیرم رو در قالب یک ‌سری محتوای ویدیویی یا متنی منتشر کنم. همین! من هر روز حدود ۱.۵ ساعت برای این موضوع وقت میزارم و امیدوارم هر وقت به نتیجه خوبی رسیدم شروع کنم به تولید محتوا و اشتراک‌گذاری آنچه که یادم گرفتم.

ساخت یک وب‌سرور ساده با PHP

در این مخزن سعی میکنم مرحله به مرحله پیش برم و یک وب‌سرور ساده طبق قواعد Hypertext Transfer Protocol -- HTTP/1.1 بسازم. در این مسیر با مفاهیم TCP/IP و سیستم‌عامل بیشتر آشنا خواهم شد و سعی میکنم هرآنچه که در این مسیر یاد میگیرم رو به نحو خاصی با دیگران به اشتراک بگزارم. از اون‌جایی که من در حال‌حاضر با زبان PHP بیشتر کار میکنم ترجیح دادم ابتدا با PHP 8.0 این کار رو انجام بدم و بعد در C بازنویسی کنم. از طریق بخش Issue ها میتونید کارهایی در حال پیاده‌سازی یا مطالعه‌شون هستم رو مشاهده کنید.

اهداف پیش‌رو

V1

  • Serve basic files (images, html, css, js, ...)
  • Handle requests in blocking-mode

V2

  • Handle requests in concurrent-mode

مطالب بخش‌های زیر دائما در حال به‌روزشدن میباشد.

کلیات دانشی که در ساخت یک وب‌سرور خیلی ساده باید بلد باشیم:

  • شبکه
  • سیستم‌عامل
  • برنامه‌نویسی در لایه سوکت
  • مطالعه RFC های مربوط به پروتکل HTTP (شناخت پروتکل)

لیستی از مقالات و ویدیو‌های خوبی که میتونه درباره وب‌سرورها مفید باشه:

You might also like...
基于 mirai-api-http 的 PHP 机器人框架

miraiez 开始使用 请在 mirai-api-http 的配置文件中启用 http 和 webhook 适配器 并将 webhook 适配器的回调地址设置为 webhook.php 的所在地址 例如 http://localhost/webhook.php 完成上述步骤后,请修改 config

PHP Coroutine HTTP client - Swoole Humanization Library

PHP Coroutine HTTP client - Swoole Humanization Library

It validates PSR-7 messages (HTTP request/response) against OpenAPI specifications
It validates PSR-7 messages (HTTP request/response) against OpenAPI specifications

NOTICE - THE PACKAGE HAS BEEN CONTRIBUTED TO THE PHP LEAGUE Go to https://github.com/thephpleague/openapi-psr7-validator This package is here for exis

This package provides some basic methods to implement a self updating functionality for your Laravel application. Already bundled are some methods to provide a self-update mechanism via Github or some private repository via http.

This package provides some basic methods to implement a self updating functionality for your Laravel 5 application. Already bundled are some methods to provide a self-update mechanism via Github.

PSR-7 HTTP message library

PSR-7 Message Implementation This repository contains a full PSR-7 message implementation, several stream decorators, and some helpful functionality l

MaxPHP HTTP project skeleton.

轻量 • 简单 • 快速 一款基于swoole的组件化的轻量PHP框架,可以用作API开发,方便快速。 主要特性 组件和框架核心分离 基于 Psr7 的 HTTP-Message 基于 Psr11 的容器 基于 Psr14 的事件 基于 Psr15 的中间件 基于 Psr16 的缓存组件,支持 Fi

Slim Framework HTTP cache middleware and service provider

Slim Framework HTTP Cache This repository contains a Slim Framework HTTP cache middleware and service provider. Install Via Composer $ composer requir

Kit is a lightweight, high-performance and event-driven web services framework that provides core components such as config, container, http, log and route.

Kit What is it Kit is a lightweight, high-performance and event-driven web services framework that provides core components such as config, container,

Asynchronous server-side framework for network applications implemented in PHP using libevent

phpDaemon https://github.com/kakserpom/phpdaemon Asynchronous framework in PHP. It has a huge number of features. Designed for highload. Each worker i

Comments
  • درگیری‌های زندگی و مدتی دوری از پروژه

    درگیری‌های زندگی و مدتی دوری از پروژه

    مدتی هستش که درگیری‌های زندگی باعث شده از این پروژه دور بشم. به زودی مجدد سعی میکنم کار کردن رو از سر بگیرم و تولید محتوا رو هم شروع کنم (از امروز شنبه ۲۵ دی مجدد برمیگردم روی پروژه)

    opened by ohmydevops 0
Releases(v1.0)
  • v1.0(Nov 27, 2021)

    • Serve basic web files (html, css, js)
    • Serve basic static files (images, videos, sounds)
    • Support 200 status code
    • Support 404 status code
    • Support GET method
    • Handle requests in blocking-mode
    • Dockerise (upload images in docker hub)
    • Can config root directory with ENV

    Docker images:

    docker pull ohmydevops/jojo-server:v1

    Source code(tar.gz)
    Source code(zip)
Owner
Amirhossein Baghaie
Interested in Computers & MTB riding
Amirhossein Baghaie
Async HTTP proxy connector, tunnel any TCP/IP-based protocol through an HTTP CONNECT proxy server, built on top of ReactPHP.

clue/reactphp-http-proxy Async HTTP proxy connector, tunnel any TCP/IP-based protocol through an HTTP CONNECT proxy server, built on top of ReactPHP.

Christian Lück 43 Dec 25, 2022
A multithreaded application server for PHP, written in PHP.

appserver.io, a PHP application server This is the main repository for the appserver.io project. What is appserver.io appserver.io is a multithreaded

appserver.io 951 Dec 25, 2022
Socks5 proxy server written in Swoole PHP

php-socks This is a Socks5 proxy server implementation built with PHP & Swoole. To start the proxy server, clone this repo, run composer install to in

Nazmul Alam 3 Jan 23, 2022
💾 High-performance PHP application server, load-balancer and process manager written in Golang. RR2 releases repository.

RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports running as a serv

Spiral Scout 45 Nov 29, 2022
🤯 High-performance PHP application server, load-balancer and process manager written in Golang

RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports running as a serv

Spiral Scout 6.9k Jan 3, 2023
This package provides a high performance HTTP server to speed up your Laravel/Lumen application based on Swoole.

This package provides a high performance HTTP server to speed up your Laravel/Lumen application based on Swoole.

Swoole Taiwan 3.9k Jan 8, 2023
FrankenPHP is a modern application server for PHP built on top of the Caddy web server

FrankenPHP: Modern App Server for PHP FrankenPHP is a modern application server for PHP built on top of the Caddy web server. FrankenPHP gives superpo

Kévin Dunglas 2.8k Jan 2, 2023
An asynchronous event driven PHP socket framework. Supports HTTP, Websocket, SSL and other custom protocols. PHP>=5.3.

Workerman What is it Workerman is an asynchronous event-driven PHP framework with high performance to build fast and scalable network applications. Wo

walkor 10.2k Dec 31, 2022
Fast php framework written in c, built in php extension

Yaf - Yet Another Framework PHP framework written in c and built as a PHP extension. Requirement PHP 7.0+ (master branch)) PHP 5.2+ (php5 branch) Inst

Xinchen Hui 4.5k Dec 28, 2022
High performance HTTP Service Framework for PHP based on Workerman.

webman High performance HTTP Service Framework for PHP based on Workerman. Manual https://www.workerman.net/doc/webman Benchmarks https://www.techempo

walkor 1.3k Jan 2, 2023