2011-12-09 4 views
35

Comment faire pour que mon serveur exécute un script php en le déclenchant manuellement en utilisant php? Fondamentalement, j'ai un assez gros fichier cronjob qui est lancé toutes les 2 heures, mais je veux être capable de déclencher le fichier manuellement moi-même sans avoir à attendre pour le charger (je veux que ce soit fait sur le côté du serveur).Exécuter un script PHP à partir d'un autre script PHP

EDIT: Je veux exécuter le fichier à partir d'un fichier php ... Pas de ligne de commande.

+2

Ou juste faire 'php file.php'? –

+1

Pourquoi ne copiez-vous pas simplement la commande à partir de la crontab et la collez dans la ligne de commande? –

+0

@Rocket Je veux le faire à partir d'un fichier php – domino

Répondre

82

Vous pouvez appeler un script PHP manuellement à partir de la ligne de commande

hello.php 
<?php 
echo 'hello world!'; 
?> 

Command line: 
php hello.php 

Output: 
hello world! 

Voir la documentation: http://php.net/manual/en/features.commandline.php


EDIT OP modifié la question d'ajouter un détail critique: le script doit être exécuté par un autre script.

Il existe plusieurs approches. Premier et le plus simple, vous pouvez simplement inclure le fichier. Lorsque vous incluez un fichier, le code à l'intérieur est "exécuté" (en fait, interprété). Tout code qui n'est pas dans une fonction ou un corps de classe sera traité immédiatement. Jetez un oeil à la documentation pour include (docs) et/ou require (docs) (note: include_once et require_once sont liés, mais différents d'une manière importante.Examinez les documents pour comprendre la différence) Votre code devrait ressembler à ceci:

include('hello.php'); 
/* output 
hello world! 
*/ 

deuxième et un peu plus complexe est d'utiliser shell_exec (docs). Avec shell_exec, vous appelez le binaire php et transmettez le script souhaité comme argument. Votre code ressemblerait à ceci:

$output = shell_exec('php hello.php'); 
echo "<pre>$output</pre>"; 
/* output 
hello world! 
*/ 

Enfin, et le plus complexe, vous pouvez utiliser la bibliothèque CURL pour appeler le fichier comme si il a été demandé par l'intermédiaire d'un navigateur.Consultez la documentation de la bibliothèque CURL ici: http://us2.php.net/manual/en/ref.curl.php

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.myDomain.com/hello.php"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) 

$output = curl_exec($ch); 
curl_close($ch); 
echo "<pre>$output</pre>"; 
/* output 
hello world! 
*/ 

Documentation pour les fonctions utilisées

+1

Je veux le faire à partir d'un fichier php pas de ligne de commande. – domino

+1

Cela aurait été une information très utile à inclure dans votre question! : P Voir l'édition, je discute des nombreuses façons d'appeler un script PHP d'un autre. –

+0

Merci beaucoup pour la longue réponse! – domino

0

S'il est une boîte de Linux, vous courriez quelque chose comme:

php /folder/script.php 

Sous Windows, vous devez vous assurer que votre fichier php.exe fait partie de votre PATH, et faire une approche similaire à la le fichier que vous souhaitez exécuter:

php C:\folder\script.php 
0

Sur la ligne de commande:

> php yourfile.php 
0

ssh Ouvrir et exécuter les comman d manuellement?

php /path/to/your/file.php 
2

vous pouvez utiliser la notation backtick:

`php file.php`; 

Vous pouvez aussi mettre ceci au début du fichier php pour indiquer l'interprète:

#!/usr/bin/php 

changement à l'endroit où vous mettez php. Ensuite, donnez l'autorisation d'exécution sur le fichier et vous pouvez appeler le fichier sans spécifier php:

`./file.php` 

Si vous voulez capturer la sortie du script:

$output = `./file.php`; 
echo $output; 
+0

cette réponse n'est pas pertinente mais il est bon à savoir. –

-4

Je pense que c'est ce que vous êtes à la recherche de

<?php include ('Scripts/Php/connection.php'); 
//The connection.php script is executed inside the current file ?> 

Le fichier de script peut aussi être dans un format txt, il doit encore travailler, il le fait pour moi

par exemple.

<?php include ('Scripts/Php/connection.txt'); 
//The connection.txt script is executed inside the current file ?> 
5

L'OP a affiné sa question sur la façon dont un script PHP est appelé à partir d'un script. L'instruction php 'require' est bonne pour la dépendance car le script s'arrêtera si le script requis n'est pas trouvé.

#!/usr/bin/php 
<? 
require '/relative/path/to/someotherscript.php'; 

/* The above script runs as though executed from within this one. */ 

printf ("Hello world!\n"); 

?> 
0

à "chaîne" un autre programme php à partir de votre code, utilisez "tête"

header("Location:index.php?page=menus");

+0

Si le script initial est exécuté à partir d'un CRON, les en-têtes ne seront pas exécutés comme je viens de le découvrir - au cas où quelqu'un d'autre aurait le même problème. – BeNice

2

Je préfère utiliser

require_once('phpfile.php'); 

beaucoup d'options là-bas pour vous . et un bon moyen de garder les choses propres. Il suffit de lancer la même commande que le cron?

0
<?php 
$output = file_get_contents('http://host/path/another.php?param=value '); 
echo $output; 
?> 
+1

fournissez du contexte et expliquez votre code. –

Questions connexes