Не удалось выполнить задание Cron в гибкой среде Google App Engine

Я переношу свое приложение PHP из стандартной среды движка приложений Google в гибкую среду.

Мое приложение отлично работает с базой данных и сеткой отправки. Но задания Cron терпят неудачу.

Мне не удалось найти то, что я пропустил, для выполнения задания Cron в среде GAE Flexible. Я дал образец кода приложения здесь.

app.yaml

runtime: php
env: flex

runtime_config:
document_root: web

handlers:

- url: /crontest
script: crontest.php

- url: .*
script: index.php

#[START env]
env_variables:
MYSQL_DBNAME: CRONDB
MYSQL_USER: root
MYSQL_PASSWORD: root123
MYSQL_CONNECTION: /cloudsql/project-id:us-central1:testphp7
#[END env]

#[START cloudsql_settings]
# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
cloud_sql_instances: "project-id:us-central1:testphp7"
#[END cloudsql_settings]

cron.yaml

- description: cron test
url: /crontest
schedule: every day 17:00
timezone: Asia/Kolkata

web / connection.php

<?php    
    $con = new mysqli(null,$_SERVER['MYSQL_USER'],$_SERVER['MYSQL_PASSWORD'],$_SERVER['MYSQL_DBNAME'],null,$_SERVER['MYSQL_CONNECTION']);
?>

web / crontest.php

<?php

include "connection.php";

$ATERM_spcallstmt="INSERT INTO SAMPLE(TEST_NO)VALUES('9876')";
$con->query($ATERM_spcallstmt);
?>

web / index.php

<?php
echo " Test Cron in FE";
?>

Создать запрос к таблице:

CREATE TABLE SAMPLE(TEST_NO VARCHAR(250));

Журнал из консоли API

18:57:00.000172.18.0.3 - - [02/May/2017:13:27:00 +0000] "GET /crontest.php HTTP/1.1" 404 162 "-" "AppEngine-Google; (+http://code.google.com/appengine)"
{
textPayload: "172.18.0.3 - - [02/May/2017:13:27:00 +0000] "GET /crontest.php HTTP/1.1" 404 162 "-" "AppEngine-Google; (+http://code.google.com/appengine)" "
insertId: "epwcgng8mcw86z"
resource: {…}
timestamp: "2017-05-02T13:27:00Z"
labels: {…}
logName: "projects/project-id/logs/appengine.googleapis.com%2Fstdout"
}

Я получил HTTP 404 и Cron Failed.

Пожалуйста, помогите мне это исправить.

Заранее спасибо.


person Sattanathan    schedule 03.05.2017    source источник
comment
Я не вижу этот конкретный параметр cloud_sql_instances в вашем app.yaml из этого руководства (cloud.google.com/appengine/docs/f flexible/python/using-cloud-sql) посмотрим, поможет ли это.   -  person ankitk    schedule 05.05.2017
comment
Спасибо, ankitk, я исправил проблему, я добавил $ _SERVER ['HTTP_X_APPENGINE_CRON'] = true; в crontest.php. Сейчас работаю   -  person Sattanathan    schedule 06.05.2017


Ответы (1)


Похоже, что cron пытается получить доступ к /web/crontest.php, что в вашем случае является неправильным путем. Я подозреваю, что у вас все еще жив старый конфиг cron?

person Takashi Matsuo    schedule 04.05.2017
comment
Спасибо, Такаши, я исправил проблему, я добавил $ _SERVER ['HTTP_X_APPENGINE_CRON'] = true; в crontest.php. Сейчас работаю. Я отредактировал свой пост - person Sattanathan; 06.05.2017