2009-09-30 5 views
1

Je tente de créer un script php capable de charger la prévision météo actuelle et il utilise un peu de pré-traitement XML pour digérer l'entrée, mais on y accède assez souvent et rechargé. Le problème commence avec mon hôte actuel, qui, oui, je comprends pourquoi, limite la quantité de puissance de traitement qu'un script prend.Comment pourrais-je réduire l'empreinte du processeur d'un script PHP?

Actuellement, il faut un processus complet pour une exécution continue, ce qui représente environ 3 secondes par exécution. Je suis limité à 12, mais je reçois pas mal de pings.

Ma question à vous les gars est: Quelles méthodes, le cas échéant, puis-je utiliser pour mettre en cache la sortie d'un script afin qu'il n'a pas à pré-traiter quelque chose qu'il a déjà fait il ya 5 minutes. Comme il fait beau, je peux avoir une différence de temps de jusqu'à 2 heures. Je suis assez familier avec PHP, alors ne vous inquiétez pas xD.

~ Merci beaucoup, Jonny: D

Répondre

2

Vous pouvez exécuter une tâche cron qui générerait des données de prévisions météorologiques et afficher uniquement les tout de la cache. Vous pouvez utiliser APC afin qu'il soit toujours chargé en mémoire (plus tous les autres avantages supplémentaires).

+0

Ah qui fonctionnerait probablement, merci: D – JonnyLitt

+1

Sinon, une alternative php seulement pourrait être d'utiliser 'filemtime()' pour retourner un fichier mis en cache ou se régénérer après une période. –

0

ont besoin d'un extrait de code pour voir quel genre de traitement que vous faites. pensez à utiliser xdebug pour optimiser votre code. Vous pouvez également utiliser un outil d'analyse comparative tel que AB pour voir combien de processus votre serveur peut gérer.

Il existe plusieurs mécanismes de mise en cache disponibles mais sans voir quel genre de processus que vous faites, il est difficile de dire ...

0

3 secondes est un temps d'exécution très longue, comme cela a déjà demandé, un peu froid serait agréable de voir comment vous traitez la « entrée » et dans quel format ladite entrée est.

Un article rapide et sale au sujet la mise en cache de script fichier se trouve ici:

http://codestips.com/?p=153

1

le Zend Framework fournit l'objet Zend_Cache avec plusieurs backends (fichier, memcached, APD). Ou vous pouvez rouler votre propre avec quelque chose comme:

$cachFile = "/path/to/cache/file"; 
$ttl = 60; // 60 second time to live 
if (!file_exists($cacheFile) || time()-filemtime($cacheFile) > $ttl) { 
    $data = getWeatherData(); // Go off and get the data 
    file_put_contents(serialize($cacheFile), $data); 
} else { 
    $data = unserialize(file_get_contents($cacheFile)); 
} 
+0

Oui, je peux éventuellement faire quelque chose dans lequel je vais utiliser un text/plain medium pour stocker la sortie en tant qu'objet de type cache, puis le mettre à jour quand le temps passe par chaque exécution. – JonnyLitt

+0

Ou vous pouvez simplement sérialiser le tout dans un fichier, j'ai modifié la réponse pour correspondre. – Neel

Questions connexes