Ik heb een php bestand die momenteel 312x met behulp van file_get_contents(),
maar de website laad daardoor ontzettend langzaam, zo langzaam, dat zelfs mysql een foutmelding geeft:
MySQL Server has gone away. Ik gebruik het nu binnen een while().
Ik zoek een oplossing waarmee ik sneller 312+ json bestanden kan lezen.
Ook zoek ik een oplossing, dat cronjob niet halverwege stopt vanwege een timeout.
Ik weet alleen niet of ik veel kan doen aan cronjob, of dat ik daarvoor contact moet opnemen met mijn webhost.
"MySQL Server has gone away" betekent dat je een te grote hoeveelheid aan data ophaalt. In my.cnf kan je dat als beheerder/root instellen. Vraag eens na wat die waarde is?
Cronjob stopt er denk ik mee, omdat het langer dan 60 seconde duurt tot de pagina volledig is geladen.
Het komt puur door file_get_contents(), dat het zo lang duurt. Ik zal contact opnemen met mijn webhost, of ze dat bij mij kunnen aanpassen.
Verder is er zeker weinig te doen aan de laadtijd?
Apache of PHP geeft een timeout, maar een cronjob kun je gebruiken zonder tussenkomst van een http-server.
Bijvoorbeeld /usr/bin/php /path/mijnscript.php
als je php script vervolgens elders informatie opvraagt, kan díe server weer wel een timeout leveren.
Maar is json in losse calls wel dé oplossing voor je probleemstelling?
Contact gehad met de webhost en er zit inderdaad een timeout op van 60 sec, want volgens hen zeggen eigenlijk 30 sec hoort te zijn). Oplossing: meerdere bestanden maken en laten uitvoeren via cronjob.
Ik loop alleen tegen iets anders aan, maar ik ga dat eerst even uitzoeken, en dan zal ik het wel hier plaatsen of evt een nieuw topic starten, aangezien het een off-topic probleem is (wel in hetzelfde bestand, maar heeft verder niets te maken met cronjob/file_get_contents().
De meeste externe contacten tellen niet tegen de tijdslimieten van PHP. Denk hierbij aan databasecontact of het lezen van bestanden. Als je door de time limit schiet is de oorzaak meestal niet omdat je een langzame externe bron hebt.