{"id":19924940,"url":"https://github.com/robsantossilva/swoole_example","last_synced_at":"2025-09-03T21:41:21.092Z","repository":{"id":105996245,"uuid":"259954769","full_name":"robsantossilva/swoole_example","owner":"robsantossilva","description":"Exemplo com Swoole","archived":false,"fork":false,"pushed_at":"2020-04-29T14:56:13.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-12T00:27:06.150Z","etag":null,"topics":["docker-compose","example","swoole"],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robsantossilva.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-29T14:50:05.000Z","updated_at":"2020-04-29T14:56:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"c30326b1-a239-4eb5-9e5b-b4781a13942d","html_url":"https://github.com/robsantossilva/swoole_example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robsantossilva%2Fswoole_example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robsantossilva%2Fswoole_example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robsantossilva%2Fswoole_example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robsantossilva%2Fswoole_example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robsantossilva","download_url":"https://codeload.github.com/robsantossilva/swoole_example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241352252,"owners_count":19948810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","example","swoole"],"created_at":"2024-11-12T22:19:38.875Z","updated_at":"2025-03-01T10:28:17.939Z","avatar_url":"https://github.com/robsantossilva.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Exemplo com Swoole\n\nO \u003cstrong\u003eSwoole\u003c/strong\u003e é um framework de programação assíncrona para PHP e já se posiciona como uma opção estável e confiável para se desenvolver de forma concorrente com alta performance e uso equilibrado de recursos. \n\nEle implementa \u003cstrong\u003eI/O assíncrono\u003c/strong\u003e orientado a eventos baseado no padrão Reactor (o mesmo utilizado por ReactPHP, NodeJS, Netty do Java, Twisted do Python entre outros). O Swoole é escrito em C e disponibilizado como uma extensão para PHP.\n\n### TCP, UDP, Unix Socket, HTTP e WebSockets\nO Swoole permite que escrevamos aplicações altamente performáticas e concorrentes usando TCP, UDP, Unix Socket, HTTP e WebSockets sem que precisemos ter grandes conhecimentos de baixo nível sobre assincronismo e/ou sobre o kernel do Linux. Ele fornece uma completa API de alto nível com foco na produtividade. O Swoole é usado em grandes projetos enterprises, principalmente na China sendo Baidu (maior portal de busca da China) e Tencent (um dos maiores portais de serviços da China) os principais casos de uso.\n\nÉ muito importante e recomendado que antes de continuar aqui, você leia o artigo sobre Introdução à programação assíncrona em PHP usando o ReactPHP, pois ele vai te introduzir alguns importantes conceitos de como é o modelo tradicional síncrono de se desenvolver em PHP e como funciona o modelo assíncrono usando o padrão Reactor.\n\n### Para o que veio e para o que não veio o Swoole\n\n\u003cstrong\u003eO Swoole não veio para substituir a abordagem tradicional e síncrona\u003c/strong\u003e de como a maioria do projetos em PHP são escritos. Ao contrário disso, ele veio pra suprir os outros casos de uso como, por exemplo, a criação de servidores TCP, RPC, Websockets etc. Ele veio para resolver o problema de servidores que precisem de alta concorrência. Para se ter ideia, um único servidor escrito usando o Swoole consegue lidar com 1 milhão de conexões (C1000K). Também podemos dizer que o Swoole veio para que você não precise mudar toda sua stack e linguagem para resolver as necessidades acima listadas.\n\n### Exemplo Prático\n\n#### Estrutura de pastas:\n\n```bash\n/Dockerfile\n/docker-compose.yml\n/app/index.php\n```\n\n```bash\n#Content of index.php\n\n\u003c?php\n$http = new swoole_http_server(\"0.0.0.0\", 8101);\n\n$http-\u003eon(\"start\", function ($server) {\n    echo \"Swoole http server is started at http://127.0.0.1:8101\\n\";\n});\n\n$http-\u003eon(\"request\", function ($request, $response) {\n    $response-\u003eheader(\"Content-Type\", \"text/plain\");\n    $response-\u003eend(\"Hello World\\n\");\n});\n\n$http-\u003estart();\n```\n\n```bash\n#Content of Swoole Dockerfile:\nFROM php:7.2-fpm\n\nRUN apt-get update\n\nRUN apt-get install vim -y \u0026\u0026 \\\n    apt-get install openssl -y \u0026\u0026 \\\n    apt-get install libssl-dev -y \u0026\u0026 \\\n    apt-get install wget -y \n\nRUN cd /tmp \u0026\u0026 wget https://pecl.php.net/get/swoole-4.2.9.tgz \u0026\u0026 \\\n    tar zxvf swoole-4.2.9.tgz \u0026\u0026 \\\n    cd swoole-4.2.9  \u0026\u0026 \\\n    phpize  \u0026\u0026 \\\n    ./configure  --enable-openssl \u0026\u0026 \\\n    make \u0026\u0026 make install\n\nRUN touch /usr/local/etc/php/conf.d/swoole.ini \u0026\u0026 \\\n    echo 'extension=swoole.so' \u003e /usr/local/etc/php/conf.d/swoole.ini\n\nRUN mkdir -p /app/data\n\nWORKDIR /app\n\nCOPY ./app /app\n\nEXPOSE 8101\nCMD [\"/usr/local/bin/php\", \"/app/index.php\"]\n```\n\n```bash\n#docker-compose.yml\nversion: '3.7'\n\nservices:\n    swoole:\n        build:\n            context: ./\n        ports: \n            - 8101:8101\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobsantossilva%2Fswoole_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobsantossilva%2Fswoole_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobsantossilva%2Fswoole_example/lists"}