Аналог AJAX в PHP

379
04 августа 2017, 02:09

Как обратится к другому файлу в PHP, чтобы только запустить скрипт, без обратной отправки результата?

Нужно без применения include или require.

Например в JQuery:

$.ajax({
            url: '/files/ajax_lg.php',
            method: 'POST',
            data: {"check_user": checkPin},
            async: false
        });

А как это реализовать в PHP?

Answer 1

Пример кода старый, но не суть.

В скрипте /files/ajax_lg.php запускайте другой скрипт, например, как в примере через exec не забывая в конце команде добавить > /dev/null 2>&1 & — это запустить скрипт в фоне и вызов /files/ajax_lg.php буквально сразу вернет «результат» и ничего ждать не нужно.

На стороне клиента, в браузере

// Выполняете запрос без перезагрузки страницы
$.ajax({
    url: '/files/run_task.php',
    method: 'POST',
    data: {"check_user": checkPin},
    async: false
});

Так, например, может выглядить ваш скрипт в файле /files/run_task.php

Где /files/run_task.php какой-то скрипт, который выполняется продолжительное время и который вы запускаете в фоне.

// /files/run_task.php
$script = APPLICATION_PATH . '/files/ajax_lg.php';
$command  = 'php ' . $script;
$command .= ' > /dev/null 2>&1 &';
exec($command, $output, $status);

Ну даже в таком случае будет правильно, если вызов /files/ajax_lg.php будет что-то возвращать. Потому что до вызова exec() могут быть ошибки...

Суть в том, и вы это поняли, чтобы веб-сервер «сразу» отправил обратно ответ на запрос (/files/ajax_lg.php), веб-серверу «приходится ждать» полностью выполнения скрипта (или пока не произойдет ошибка). Чтобы не дожиться выполнения какого-то скрипта — его можно запустить в фоне. Обрабатывать ошибки, если они возникают в таком скрипте — уже другая история...

READ ALSO
.htaccess для ЧПУ в подпапке

.htaccess для ЧПУ в подпапке

Представим, что есть сайт domenru

187
Не видны данные при выводе

Не видны данные при выводе

Вывожу данные из базы после загрузки страницыконечно, же title, description Не виден , ни поисковику ни парсеру вк (виджет для share)

271
Вывод имени клиента в input

Вывод имени клиента в input

Есть две страницы

206