cakephp: één engine voor meerdere applicaties
De uitdaging: meerdere cakephp installaties
Traditioneel gezien gebruikt elke applicatie zijn eigen, afzonderlijke CakePHP engine. Stel je voor dat je tien applicaties op een server hebt. Elke keer dat je de CakePHP engine wilt updaten, moet je de nieuwe versie tien keer uploaden. Bovendien heb je tien identieke kopieën van de CakePHP broncode. Dit is inefficiënt en tijdrovend. De oplossing is om één CakePHP engine te gebruiken die door alle tien applicaties wordt gedeeld. Dit vereenvoudigt updates aanzienlijk.
Standaard structuur versus een engine
Normaliter ziet de directory structuur er zo uit: ~/domains/domena1.pl/public_html/ en ~/domains/domena2.com/public_html/. Elke public_html/ directory bevat vaak twee CakePHP applicaties, met de volgende inhoud: app/, cake/, plugins/, vendors/, .htaccess en index.php. Met de ‘één engine voor meerdere applicaties’ strategie, vereenvoudig je de public_html/ directory tot alleen app/, .htaccess en index.php.
Verplaatsen van de core bestanden
De overige mappen (cake/, plugins/, vendors/) worden verplaatst naar een andere locatie, bijvoorbeeld ~/cakephp_nr_wersji/. Een voorbeeld van de nieuwe structuur: ~/cakephp_1_3_10/cake/, ~/cakephp_1_3_10/plugins/, ~/cakephp_1_3_10/vendors/. Dit houdt de public_html/ directory schoon en overzichtelijk, terwijl de engine nog steeds beschikbaar is.
De cruciale rol van cake_core_include_path
Om ervoor te zorgen dat de applicaties de gedeelde CakePHP engine vinden, moet je de CAKE_CORE_INCLUDE_PATH constante aanpassen in het app/webroot/index.php bestand. Deze constante moet de padnaam naar de directory bevatten die de cake/ en vendors/ mappen bevat. In de eerder genoemde structuur zou dit er bijvoorbeeld zo uitzien: define('CAKE_CORE_INCLUDE_PATH', dirname(dirname(dirname(ROOT))).DS.'cakephp1_3_10');. Deze aanpassing is eenmalig per applicatie.
Voordelen van de aanpak
- Vereenvoudigde Updates: Eén update voor de engine, in plaats van tien.
- Ruimtebesparing: Vermindert de hoeveelheid opgeslagen code aanzienlijk.
- Verbeterd Onderhoud: Eenvoudiger beheer van de CakePHP installatie.
- Consistentie: Zorgt voor dezelfde CakePHP versie in alle applicaties.
Verdere optimalisaties
Als je verder wilt optimaliseren, kun je overwegen om de app/ directory direct in de public_html/ directory te plaatsen. Dit vereist echter een andere aanpak en wordt in een aparte post verder uitgewerkt. Het is belangrijk om te onthouden dat het correct instellen van de CAKE_CORE_INCLUDE_PATH essentieel is voor het functioneren van deze strategie.
