shedule-execute.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief обработчик выполнения cron задачи по кнокпе из таблицы
6  */
7 
8 isset($user) or require $_SERVER['DOCUMENT_ROOT'] . '/page/404.php';
9 
10 set_time_limit(60);
11 
12 header("Content-type: application/json");
13 
14 if (!($row = Wrong\Models\Crontabs::find($_POST['id']))) {
15  exit(json_encode(['error' => 'Ошибка']));
16 }
17 
18 if (!$user->access()->write($row)) {
19  exit(json_encode(['error' => 'Недостаточно прав!']));
20 }
21 
22 if ($row->method == 'CLI' && !Wrong\Start\Env::$e->CRON_CLI) {
23  exit(json_encode(['error' => 'Поддержка CLI команд отключена в системных настройках!']));
24 }
25 
26 Wrong\Task\Stackjs::add('successToast("Задача выполняется...");', 0);
27 session_write_close();
28 
29 $cmd = 'php -f ' . dirname(__DIR__, 4) . '/cron.php ' . $row->id . ' ' . microtime(true);
30 exec('(' . $cmd . ' &) > /dev/null 2>&1');
31 
32 for ($i = 1; $i <= 33; $i++) {
33  usleep(100000 * $i);
34  if (intval(shell_exec("ps aux | grep '" . addcslashes($cmd, '.') . "' | wc -l")) == 0) {
35  exit(json_encode(['result' => 'ok', 'message' => 'Задача выполнена!']));
36  }
37 }
38 
39 exit(json_encode(['result' => 'ok', 'message' => 'Задача всё ещё выполняется, следите за её потоками.']));
$_POST['groups']
Definition: add-action.php:16
if(empty($_POST['name'])) if(empty($_POST['type'])||!in_array($_POST['type'], ['page', 'modal', 'incode', 'select', 'action'])) $i
static add($code, $timeout=0, $key='')
Definition: Stackjs.php:25
$user
Definition: from-user.php:38
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
Definition: from-user.php:36
if(($dbh=Connect::getInstance(true) ->dbh) && $dbh->query("SHOW TABLES") ->fetchAll() && $dbh->query("SELECT COUNT(*) FROM `users`") ->fetchColumn()) if(!empty($_POST)) exit
Definition: install.php:198