Hoe de Swoole-module voor PHP inschakelen in ServBay
ServBay is een krachtige lokale webontwikkelomgeving die standaard veel tools en extensies bevat waar ontwikkelaars naar op zoek zijn, waaronder de high-performance Swoole PHP-extensie. Swoole is een asynchrone, parallelle en prestatiegerichte netwerk-engine speciaal ontworpen voor PHP, waarmee je de performance en schaalbaarheid van PHP-applicaties aanzienlijk kunt vergroten. In dit artikel leer je stap-voor-stap hoe je de Swoole-extensie eenvoudig inschakelt in ServBay, zodat je met haar krachtige mogelijkheden efficiëntere PHP-applicaties en -diensten kunt bouwen.
Over het Swoole-framework
Swoole is een open source-project dat PHP voorziet van geavanceerde features zoals asynchrone I/O (vergelijkbaar met Node.js), coroutines, multi-processen en meer. Dankzij Swoole kunnen PHP-ontwikkelaars het traditionele, blokkade-model van webservers (zoals Apache/Nginx + PHP-FPM) achter zich laten en high-performance services bouwen die permanent in het geheugen blijven draaien, bijvoorbeeld:
- High-performance API gateways
- Real-time communicatietoepassingen (WebSocket)
- Game-servers
- Internet of Things (IoT)-applicaties
- Backend-services en taakverwerking
Belangrijkste kenmerken van Swoole
- Hoge prestaties: Realiseert asynchrone, niet-blokkerende I/O met behulp van epoll/kqueue system calls, aangevuld met multi-threading/multi-processen/coroutines voor hoge doorvoer en lage latentie.
- Asynchrone werking & coroutines: Biedt coroutine-ondersteuning, zodat asynchrone code op een bijna synchrone manier kan worden geschreven en de ontwikkelsnelheid sterk verhoogt.
- Rijke set componenten: Bevat ingebouwde HTTP-, WebSocket-, TCP-, UDP-servers en -clients, evenals connection pools, timers, process management en meer.
- Gemakkelijke integratie: Kan worden gebruikt met bestaande PHP-frameworks (zoals Laravel, Symfony, ThinkPHP, enz.) of voor het ontwikkelen van compleet nieuwe Swoole-native applicaties.
Ondersteuning van de Swoole-module in ServBay
ServBay levert standaard de Swoole-extensie mee voor verschillende versies van PHP; je hoeft deze dus niet apart te downloaden of te compileren. ServBay beheert automatisch de compatibele Swoole-versie voor de geselecteerde PHP-versie.
Swoole-extensie kan momenteel worden ingeschakeld voor de volgende PHP-versies in ServBay:
- PHP 5.6
- PHP 7.x-serie
- PHP 8.x-serie (inclusief PHP 8.5)
Afhankelijk van de gekozen PHP-versie matcht ServBay automatisch de juiste Swoole-extensiebestand.
Vereisten
Voordat je de Swoole-module activeert, zorg ervoor dat:
- ServBay met succes is geïnstalleerd en uitgevoerd.
- Je de gewenste PHP-versie in ServBay hebt geïnstalleerd én geselecteerd, waarop de Swoole-extensie moet draaien.
Stappen om de Swoole-module in te schakelen
ServBay biedt twee manieren om de Swoole-module te activeren: via de grafische interface (GUI) of handmatig via configuratiebestanden. De GUI-methode is het makkelijkst en meest intuïtief, dus die raden we aan.
Inschakelen via de ServBay GUI (Aanbevolen)
Dit is de snelste en eenvoudigste manier om Swoole in te schakelen:
- Open de ServBay grafische gebruikersinterface.
- Kies in de linkernavigatie Talen (Languages).
- Klik op PHP.
- Zoek in de PHP-versielijst rechts de PHP-versie waarin je Swoole wilt activeren (bijvoorbeeld:
PHP 8.3
). Zorg ervoor dat deze versie is geselecteerd (de cirkel is groen). - Klik op de knop Extensies (Extensions) naast de gekozen PHP-versie.
- Zoek in de uitklapbare lijst naar de swoole extensie.
- Zet de schakelaar links van de swoole extensie op aan (de schakelaar wordt groen).
- Klik onderaan het venster op Opslaan (Save) of Toepassen (Apply).
- ServBay zal je vragen om de betreffende PHP-service te herstarten om de nieuwe extensie te laden. Klik op Herstarten (Restart).
Na het voltooien van de herstart is de Swoole-module succesvol ingeschakeld.
Handmatig bewerken van het configuratiebestand (Gevorderden)
Voor geavanceerdere instellingen of als je de voorkeur geeft aan handmatige configuratie, kun je Swoole activeren door het ini-bestand van PHP te bewerken.
Open de
conf.d
-configuratiemap van de betreffende PHP-versie. In deze map plaatst ServBay losse PHP-extensie-configuratiebestanden die automatisch worden geladen. Voor PHP 8.3 is de map bijvoorbeeld:/Applications/ServBay/etc/php/8.3/conf.d/
1Let op: als je tijdens de installatie een andere map hebt opgegeven voor ServBay, pas dan het pad aan naar jouw situatie.
Vind en open het bestand
swoole.ini
in deze map.Meestal is de regel om Swoole te activeren standaard uitgeschakeld (met een
;
ervoor). Zoek bijvoorbeeld naar:ini[Swoole] ; Uncomment the following line to enable Swoole ;extension = swoole.so
1
2
3Verwijder het
;
-teken voor de regelextension = swoole.so
om deze te activeren:ini[Swoole] ; Uncomment the following line to enable Swoole extension = swoole.so
1
2
3Sla het bestand
swoole.ini
op.Zoek in het hoofdscherm van de ServBay GUI of via het servicebeheer het juiste PHP-proces en klik op de herstartknop.
Na de herstart wordt de Swoole-module op basis van je configuratie geladen.
Controleren of de Swoole-module succesvol is ingeschakeld
De meest gebruikte methode is via de functie phpinfo()
waarbij je de geladen modules van PHP kunt bekijken.
- Maak in de hoofdmap van een van je websites op ServBay (bijvoorbeeld:
/Applications/ServBay/www/servbay.demo/public/
) een bestand aan genaamdphpinfo.php
. - Voeg de volgende inhoud toe aan
phpinfo.php
:php<?php phpinfo(); ?>
1
2
3 - Zorg ervoor dat het domein
servbay.demo
correct is ingesteld in ServBay en verwijst naar de map waarphpinfo.php
zich bevindt. - Open in je browser de juiste URL, bijvoorbeeld
https://servbay.demo/phpinfo.php
. - Scroll op de pagina of gebruik de zoekfunctie van je browser (Ctrl+F of Cmd+F) en zoek naar het woord "swoole".
Wordt er op de pagina informatie over Swoole (zoals versienummer of configuratie) getoond, dan is de Swoole-module succesvol geladen en geactiveerd.
Afbeelding: Zoeken naar Swoole-informatie op de phpinfo-pagina
Voorbeeld: Swoole gebruiken
Na het activeren van de Swoole-module kun je aan de slag met Swoole-applicaties. Hieronder zie je een eenvoudig voorbeeld van het maken van een basis HTTP-server met Swoole.
Voorbeeldcode: Een eenvoudige Swoole HTTP-server maken
Maak een projectmap Maak in jouw ontwikkelmap (bijvoorbeeld onder
/Applications/ServBay/www/
) een nieuwe map aan, bijvoorbeeldmy-swoole-app
. Maak daarbinnen eenpublic
-map aan voor het entrypoint-bestand.bashcd /Applications/ServBay/www/ mkdir my-swoole-app cd my-swoole-app mkdir public
1
2
3
4Maak het server-entrypointbestand
public/index.php
aanphp<?php require __DIR__ . '/../vendor/autoload.php'; // Alleen nodig als je andere afhankelijkheden via Composer hebt geïnstalleerd use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response; // Maak een HTTP-server aan die luistert op alle lokale IP's (0.0.0.0) op poort 9501 $server = new Server("0.0.0.0", 9501); // Optioneel: Stel serverparameters in // $server->set([ // 'worker_num' => 4, // Aantal worker-processen // 'daemonize' => false, // Server draaien als daemon // ]); // Registreer event-handler voor inkomende verzoeken $server->on("request", function (Request $request, Response $response) { // Stel response-headers in $response->header("Content-Type", "text/plain"); // Verstuur een response-body $response->end("Hello ServBay with Swoole!"); }); // Optioneel: Event-handler wanneer de server start $server->on("start", function (Server $server) { echo "Swoole http-server gestart op http://0.0.0.0:9501\n"; }); // Start de server $server->start(); echo "Swoole-server gestopt.\n"; // Deze regel wordt alleen uitgevoerd ná stopzetten van de server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35Let op: De regel
require __DIR__ . '/../vendor/autoload.php';
is alleen nodig als je via Composer andere Swoole-gerelateerde libraries gebruikt (zoalsswoole/ide-helper
of een framework). Gebruik je alleen pure Swoole-code, dan mag je deze regel verwijderen.Server starten via de commandline Open de ServBay-terminalfunctie, of het standaard terminalprogramma, en ga naar je projectmap (
/Applications/ServBay/www/my-swoole-app/
). Controleer of je terminal de door ServBay beheerde PHP-versie gebruikt (which php
), of open de ServBay-terminal zelf.Start de Swoole-server met het volgende commando:
shphp public/index.php
1Als alles correct werkt, zie je in de terminal een melding zoals "Swoole http server is started at http://0.0.0.0:9501".
Afbeelding: Swoole-server draaien in de terminal
Testen Open in je browser
http://localhost:9501
. De pagina behoort nu "Hello ServBay with Swoole!" weer te geven.Wil je de Swoole-server stoppen? Druk dan op
Ctrl + C
in de terminal.
Aandachtspunten
- Manier van uitvoeren: Het bovenstaande voorbeeld laat zien hoe je rechtstreeks via de commandline een Swoole-server draait; dit is vooral bedoeld voor services die permanent in het geheugen blijven. Gebruikelijke webapps (zoals Laravel/Symfony/WordPress) draaien doorgaans onder PHP-FPM en worden via Caddy of Nginx geproxyd. Wil je deze frameworks direct in een Swoole-omgeving draaien (zoals met Hyperf of Swoole-Laravel), dan gebruik je meestal het framework's eigen startscript en werk je met een vergelijkbare, zelfstandige processtructuur als in het Swoole-voorbeeld.
- Poortgebruik: De Swoole-server luistert op een gespecificeerde poort (in het voorbeeld 9501). Zorg dat deze poort niet in gebruik is door een ander programma.
- Foutlogboeken: Fouten en output van Swoole verschijnen normaal direct in de terminal waarmee de server is gestart, of worden via de instellingen naar een specifiek logbestand geschreven.
Veelgestelde vragen (FAQ)
V: Ik heb Swoole in de ServBay GUI ingeschakeld, maar zie geen Swoole-informatie op de phpinfo()
-pagina. Wat nu?
A: Controleer het volgende:
- Kijk je naar de juiste
phpinfo()
-pagina? In ServBay kun je meerdere PHP-versies tegelijk hebben draaien. Controleer of de website die je bekijkt of het commando dat je uitvoert écht via de PHP-versie gaat waarin je Swoole hebt geactiveerd. - Heb je in de ServBay GUI daadwerkelijk opgeslagen én de bijbehorende PHP-service opnieuw gestart?
- Heb je handmatig
swoole.ini
aangepast? Controleer dan het pad, de bestandsnaam en of de regelextension = swoole.so
correct en niet gecommentarieerd is.
V: Waarom krijg ik bij het uitvoeren van een Swoole-voorbeeld de foutmelding Class 'Swoole\Http\Server' not found
?
A: Meestal betekent dit dat de Swoole-extensie niet is geladen in je actieve PHP-omgeving. Controleer of Swoole daadwerkelijk is geactiveerd volgens bovenstaande stappen. Let erop dat je het php public/index.php
-commando uitvoert met de juiste PHP-versie van ServBay waarop Swoole actief is. Je kunt in de terminal snel checken of de module geladen is met: php -m | grep swoole
.
Samenvatting
Dankzij ServBay wordt het inschakelen van de Swoole PHP-extensie kinderspel. Of je nu kiest voor de eenvoudige GUI of liever de configuratiebestanden handmatig bewerkt, in een paar stappen laad je Swoole in elke gewenste PHP-versie en ben je klaar voor het ontwikkelen van high-performance, asynchrone webtoepassingen. Met de krachtige features van Swoole kun je moeiteloos snelle, schaalbare PHP-services bouwen en de volle potentie uit PHP halen. ServBay maakt het beheren van je ontwikkelomgeving makkelijk, zodat jij je volledig kunt focussen op het bouwen en niet op het configureren.