код воспламенитель и exec? - PullRequest
1 голос
/ 08 июня 2011

У меня есть скрипт, который вставляет в базу данных, например, 20000 пользователей с адресами электронной почты в пакетах по 1000

(так две таблицы, emailParent, emailChild), в emailChild есть 1000 строк для каждой строки в emailParent.

Я хочу запустить скрипт, который отправляет эти электронные письма, который в основном гласит: //check_for_pending_parent_rows() returns the id of the first pending row found, or 0
while($parentId = check_for_pending_parent_row()){//loop over children of parent row}

Теперь, когда речь идет о серверах sendgrid, это может занять некоторое время.

Итак, я хочу иметь возможность перейти на страницу и запустить эту страницу в фоновом режиме, который отправляет электронные письма в sendgrid.

Я думал, что смогу использовать exec(), но потом понял,Я использую воспламенитель кода, что означает, что точка входа ДОЛЖНА быть index.php, следовательно, я не думаю, что exec() будет работать,

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

Ответы [ 3 ]

2 голосов
/ 08 июня 2011

Это не совсем ответ, просто что-то слишком длинное, чтобы оставлять комментарии

@ Фрэнк Фармер: 70 строк кажутся немного чрезмерный, этот пример из простого тест делает это почти вдвое меньше, В чем разница?

<?php
//---------------------------
//define required constants
//---------------------------

define('ROOT', dirname(__file__) . '/');
define('APPLICATION', ROOT . 'application/');
define('APPINDEX', ROOT . 'index.php');

//---------------------------
//check if required paths are valid
//---------------------------
$global_array = array(
    "ROOT" => ROOT,
    "APPLICATION" => APPLICATION,
    "APPINDEX" => APPINDEX);

foreach ($global_array as $global_name => $dir_check):
    if (!file_exists($dir_check)) {
        echo "Cannot Find " . $global_name . " File / Directory: " . $dir_check;
        exit;
    }
endforeach;

//---------------------------
//load in code igniter
//---------------------------
//Capture CodeIgniter output, discard and load system into $ci variable
ob_start();
include (APPINDEX);
$ci = &get_instance();
ob_end_clean();

//do stuff here
1 голос
/ 26 августа 2012

Петах предложил cURL, но недавно (начиная с 2.0), CodeIgniter теперь разрешает вызовы вашим контроллерам через CLI :

Это должно быть проще, чем cURL.

1 голос
/ 08 июня 2011

Используйте exec для запуска PHP-скрипта CLI vanilla для вызова страницы через cURL

См. http://php.net/manual/en/book.curl.php для получения информации о cURL

Это то, что я должен был сделать с некоторыми из моих приложений codeigniter

(Также убедитесь, что вы установили время на 0)

И, делая это таким образом, вы все равно можете отлаживать его в браузере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...