Выполнить скрипт PHP из другого скрипта PHP

Как я могу заставить свой сервер запускать php-скрипт, запуская его вручную с помощью php? В основном у меня есть довольно большой файл cronjob, который запускается каждые 2 часа, но я хочу, чтобы иметь возможность запускать файл вручную самостоятельно, не дожидаясь его загрузки (я хочу, чтобы это было сделано со стороны сервера).

EDIT: Я хочу выполнить файл из php-файла … Не командной строки.

Вы можете вызвать скрипт PHP вручную из командной строки

 hello.php <?php echo 'hello world!'; ?> Command line: php hello.php Output: hello world! 

См. Документацию: http://php.net/manual/en/features.commandline.php


EDIT OP отредактировал вопрос, чтобы добавить критическую деталь: скрипт должен быть выполнен другим скриптом.

Есть несколько подходов. Сначала и проще всего, вы можете просто включить файл. Когда вы включаете файл, код внутри «выполняется» (фактически, интерпретируется). Любой код, который не находится внутри функции или тела класса, будет обработан немедленно. Взгляните на документацию для include ( docs ) и / или require ( docs ) (обратите внимание: include_once и require_once связаны, но различны по-важному. Проверьте документы, чтобы понять разницу). Ваш код будет выглядеть так:

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

Второй и немного более сложный – использовать shell_exec ( docs ). С помощью shell_exec вы shell_exec двоичный код php и передадите требуемый скрипт в качестве аргумента. Ваш код будет выглядеть так:

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

Наконец, и самое сложное, вы можете использовать библиотеку CURL для вызова файла, как если бы он запрашивался через браузер. Ознакомьтесь с документацией библиотеки CURL здесь: 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! */ 

Документация для используемых функций

OP уточнил свой вопрос о том, как скрипт php вызывается из сценария. Оператор php «require» хорош для зависимостей, поскольку скрипт останавливается, если требуемый скрипт не найден.

 #!/usr/bin/php <? require '/relative/path/to/someotherscript.php'; /* The above script runs as though executed from within this one. */ printf ("Hello world!\n"); ?> 

вы можете использовать обозначение обратной линии:

 `php file.php`; 

Вы также можете поместить это в начало файла php, чтобы указать интерпретатор:

 #!/usr/bin/php 

Измените его туда, куда вы положили php. Затем дайте разрешение на выполнение в файле, и вы можете вызвать файл без указания php:

 `./file.php` 

Если вы хотите записать вывод скрипта:

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

Я предпочитаю использовать

 require_once('phpfile.php'); 

множество вариантов для вас. и хороший способ сохранить чистоту.

Если это linux box, вы будете запускать что-то вроде:

 php /folder/script.php 

В Windows вам необходимо убедиться, что ваш файл php.exe является частью вашего PATH и аналогичный подход к файлу, который вы хотите запустить:

 php C:\folder\script.php 

В командной строке:

 > php yourfile.php 

Откройте ssh и выполните команду вручную?

 php /path/to/your/file.php 

для «цепочки» другой php-программы из вашего кода используйте «заголовок»,

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

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

Я думаю, это то, что вы ищете

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

Файл сценария также может быть в формате .txt, он все равно должен работать, он делает для меня

например

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