Подтвердить что ты не робот

Выполните PHP скрипт с другого PHP скрипт

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

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

4b9b3361

Ответ 1

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

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

Command line:
php hello.php

Output:
hello world!

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


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

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

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

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

$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!
*/

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

Ответ 2

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

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

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

printf ("Hello world!\n");

?>

Ответ 3

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

`php file.php`;

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

#!/usr/bin/php

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

`./file.php`

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

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

Ответ 4

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

require_once('phpfile.php');

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

Ответ 5

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

php /folder/script.php

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

php C:\folder\script.php

Ответ 6

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

> php yourfile.php

Ответ 7

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

php /path/to/your/file.php

Ответ 8

чтобы "связать" другую программу php из вашего кода, используйте "header"

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

Ответ 9

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

Ответ 10

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

<?php include ('Scripts/Php/connection.php');
//The connection.PHP скрипт is executed inside the current file ?>

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

например.

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