2011-07-20 2 views
1

que je fais dans mon fichier principal permet de dire index.phpphp cli popen() inclure le fichier une fois?

$handle = popen("php -q nah.php -p=". escapeshellarg($part) . " 2>&1", "r"); 
while (!feof($handle)) 
{ 
    $read = fread($handle, 2096); 
    echo $read; 
} 
pclose($handle); 

Ce que je veux est que je n'inclure un fichier contenant un certain nombre de classes dans le nah.php et non compris dans le nah.php parce que le nah .php est provoqué en utilisant une boucle while, donc si je l'inclue dans nah.php ça va ralentir un peu.

Est-ce possible?

+0

Pourriez-vous, s'il vous plaît, reformuler votre question? – wonk0

+0

@ wonk0 Je veux inclure un fichier dans le fichier principal et non dans le fichier provoqué par le fichier. – kritya

+0

@kritya: définissez _'un bit__ parce que si ce sont juste des fichiers de classe/fonction, surtout quand ils sont chargés automatiquement, je pense que vous faites beaucoup d'efforts pour quelques millisecondes. – Wrikken

Répondre

0

Si vous dites que, si PHP est en mode CLI, vous ne voulez pas inclure des fichiers qui seraient autrement inclus par nah.php, faites:

if (php_sapi_name() !== 'cli') 
{ 
    // include files here 
} 

Sinon ... tout simplement pas inclure les fichiers ...?

+0

Non Non, je veux inclure tous les fichiers SEULEMENT une fois et pas dans les fichiers qui ont été provoqués par le popen – kritya

0

Ou optez pour pcntl_fork pour celui-ci (si c'est en CLI, ne le faites pas dans un serveur web pour une variété de raisons). Vous n'aurez qu'à charger toutes les définitions de classe/fonction une seule fois (mais n'ouvrez pas encore les ressources, par exemple, une connexion à la base de données doit être ouverte dans l'enfant). Obtenir les données est alors un peu plus de travail, mais pas très difficile. Je ne pense pas que vous obtiendrez un gain de vitesse significatif cependant ...

+0

Code s'il vous plaît? :RÉ – kritya