我在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文件夹中的细分文件夹中。然后我重新启动了我的申请。但它不起作用。有什么想法吗?
答案 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。