在openshift中创建一个cron作业

时间:2014-03-08 09:55:47

标签: 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);
?>

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

2 个答案:

答案 0 :(得分:5)

您需要两个文件。

1:CRON FILE

这是一个执行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

2:PHP文件

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

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

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

<?php

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

?>

要回答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);
?>

答案 1 :(得分:1)

您必须编写shell / bash脚本并将其放在细分文件夹中。 这个脚本必须运行你的php文件。它可能看起来像:

myscript.sh:

#!/bin/bash
export PHP=/usr/local/zend/bin/php ;
$PHP my-curl-cron.php

(别忘了让它可执行:chmod +x myscript.sh) 我建议您阅读this article以及this tutorial