【问题标题】:Creating a cron job in openshift在 openshift 中创建一个 cron 作业
【发布时间】:2014-03-08 09:55:47
【问题描述】:

我在 openshift 中创建了一个应用程序。我有一个应该每分钟运行一次的 cron,因为它被放置在 cron 内的 minutely 文件夹中。但它永远不会运行。它是一个使用 curl 访问 url 的 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);
?>

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

【问题讨论】:

  • 可以发一下脚本吗?
  • @lootsch: 脚本是贴出的代码

标签: php cron openshift


【解决方案1】:

您将需要两个文件。

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

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);

?>

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

【讨论】:

    【解决方案2】:

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

    myscript.sh:

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

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

    【讨论】:

    • 你按照this tutorial的所有步骤操作了吗?也许this link 更有帮助?
    • 请手动运行脚本并检查它是否有效。否则发布输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多