在openshift中创建一个cron作业

San*_*etR 1 php cron openshift

我在openshift中创建了一个应用程序.我有一个应该每分钟运行一次的cron,因为它被放在cron里面的一个小文件夹里.但它永远不会运行.它是一个PHP脚本,使用curl命中网址.任何的想法

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>
Run Code Online (Sandbox Code Playgroud)

我创建了这个脚本并将其放在.openshift/crons文件夹中的细分文件夹中.然后我重新启动了我的申请.但它不起作用.任何的想法?

Tam*_*ári 5

您将需要两个文件.

1:CRON文件

它是一个脚本,将执行您的PHP脚本.您需要将它放在细分文件夹中.我们将其命名为"crontest.sh",因此完整路径将为此,其中000000000000000000000000是您自己的OPENSHIFT_APP_UUID:

/ var/lib/openshift/000000000000000000000000 /app-root/runtime/repo/.openshift/cron/minutely/crontest.sh

该文件仅包含以下行:

php $OPENSHIFT_REPO_DIR/php/crontest.php
Run Code Online (Sandbox Code Playgroud)

2:PHP文件

它是您的PHP脚本,将由您的Cron脚本每分钟执行一次.您需要放在Cron文件中指定的同一文件夹中.我们将其命名为"crontest.php",因此完整路径将为此,其中000000000000000000000000是您自己的OPENSHIFT_APP_UUID:

/ var/lib/openshift/000000000000000000000000 /app-root/runtime/repo/php/crontest.php

该文件包含您的PHP脚本,例如,这将使您的PHP脚本旁边显示一个名为"crontest.txt"的文件,其中包含与传递的分钟数一样多的"1":

<?php

    file_put_contents(getenv('OPENSHIFT_REPO_DIR').'php/crontest.txt', '1', FILE_APPEND);

?>
Run Code Online (Sandbox Code Playgroud)

要回答SanksR的具体问题,PHP文件将在"app-root/runtime/repo/php/crontest.php"文件中包含以下代码,而"app-root/runtime/repo/.openshift/cron/minutely" /crontest.sh"将包含这个:" php $ OPENSHIFT_REPO_DIR/php/crontest.php ".

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>
Run Code Online (Sandbox Code Playgroud)