Naar de inhoud

Command Line Tool

Scheduler

Freelance Freelance developer 2026

Voor zo goed als al mijn websites en applicaties geldt dat er dagelijks een back-up gemaakt moet worden. En die back-up moet ook dagelijks naar een offsite locatie verplaatst worden. Om er zeker van te zijn dat deze back-up niet ineens veel kleiner is wil ik dat controleren en indien er iets niet in de haak is direct actie ondernemen. Bijna net zo belangrijk als een back-up is het hebben van een geldig SSL-certificaat. Zonder dat certificaat blokkeren de meeste browsers de verbinding naar de website en haken bezoekers af. Dus als de vervaldatum van zo'n certificaat in zicht komt wil ik dat weten. En zo zijn er nog meer dingen waarvan ik dagelijks (of meerdere keren per dag) gecontroleerd wil hebben of alles goed gaat. En als het dan toch even niet helemaal gaat zoals het hoort? Dan krijg ik direct een notificatie op mijn telefoon zodat ik gelijk actie kan ondernemen.

Deze applicatie is een verzameling van allerlei kleine stukjes code, of scripts, die controles uitvoeren. Door deze scripts op een eenzelfde manier in te richten en te bundelen is de Scheduler ontstaan; een PHP-applicatie die met behulp van Symfony Console en Symfony Schedule er voor zorgt dat allerlei taken uitgevoerd worden. Ik heb deze applicatie zowel op een offsite locatie als op al mijn servers draaien. Met behulp van configuratie kan ik taken aan en uit zetten. Het maken van een back-up gebeurt op de (web)servers, het downloaden van die back-up alleen op de offsite locatie. Handig en overzichtelijk!

In het verleden had ik een verzameling van losse scripts die allemaal hun eigen taakje hadden. In de crontab (vertaald: de Windows Taakmanager, maar dan voor Linux) stonden deze scripts dan allemaal geregistreerd. Dit is nu allemaal geschiedenis. Door een applicatie te maken waar alle scripts zijn opgenomen als Symfony Command en de crontab is vervangen door de Symfony Schedule bundle kan er gebruik gemaakt worden van gedeelde code. Zo heb ik een losse service gemaakt die de API van PushOver aanroept voor het versturen van een notificatie. Hierdoor kunnen alle taken een notificatie versturen als dat nodig is, maar hoef ik de code hiervoor niet tig keer op te nemen.

Ik maak voor het monitoren van mijn servers gebruik van Beszel. Als de serverbelasting of het geheugengebruik van een server te hoog wordt krijg ik een push notificatie. In het overzicht van Beszel staat ook per server of er updates zijn, maar helaas is op dit moment de notificatie daarvoor nog niet geregeld in Beszel. Wel is er een API beschikbaar, dus ik heb een Command gemaakt dat verbinding maakt met de API van Beszel, ophaalt of er servers zijn waarvoor er updates beschikbaar zijn en een push notificatie stuurt als dat voor een of meerdere servers van toepassing is. Hierdoor kan ik snel updates installeren en mogelijke problemen met de beveiliging van mijn servers en applicatie vroegtijdig voorkomen.

Veelgestelde vragen

Deze applicatie biedt een raamwerk voor het uitvoeren van taken die te automatiseren zijn met behulp van PHP. De mogelijkheden zijn dus in feite eindeloos, zolang het script met PHP geschreven is/wordt en benodigde data op te halen is vanuit PHP (al dan niet met behulp van een API). Het maken van een back-up is een command line commando dat uitgevoerd wordt, het downloaden is een rsync via SFTP en voor Beszel wordt de API aangeroepen. Ik heb script geschreven voor het maken van back-up's van vhosts die op de standaard plek staan, maar ook voor een Plesk locatie. Inmiddels staat de teller op 15 verschillende taken .. and counting ;-)

In de basis worden alle taken uitgerold naar alle servers. Hierdoor kan in theorie ook een database back-up gemaakt worden op de offsite locatie (waar geen database draait). Standaard staan echter alle taken uit. Door middel van een configuratiebestand per installatie kan ik aanzetten of de taak moet draaien en eventueel ook wat zaken configureren. Het maken van een back-up van de vhosts (de daadwerkelijke websites) heeft geen zin op een server waar alleen een mail applicatie draait. Ik heb het zo opgezet dat als er een nieuwe taak bij komt deze standaard niet uitgevoerd wordt; dit moet expliciet aangezet worden op de betreffende server.

Binnen dit project gebruikte technieken

Composer

Composer

Composer

Composer is een dependency manager voor PHP. Hiermee kun je eenvoudig PHP libraries installeren en updaten.

Junie

Junie

Junie

Junie is een autonome AI-codingagent ontwikkeld door JetBrains welke direct in de IDE beschikbaar is.

Linux

Linux

Linux

Het open source besturingssysteem waar veel webservers op draaien.

PHP

PHP

PHP

PHP. De programmeertaal achter heel veel websites, applicaties en webshops.

PhpStorm

PhpStorm

PhpStorm

Geavanceerde op PHP gerichte IDE van JetBrains. Biedt uitgebreide ondersteuning voor de meeste recente versies van PHP maar ook frameworks als Symfony en Laravel.

Symfony

Symfony

Symfony

Symfony is een van de meest populaire PHP frameworks voor developers.

Yaml

Yaml

Yaml

Een mensvriendelijk leesbaar bestandsformaat voor het uitwisselen van gegevens. Vaak gebruikt voor configuratiebestanden.

Ook zo'n project?

Benieuwd wat ik voor jouw website, webshop of maatwerkapplicatie kan betekenen? Neem gerust contact met mij op.