如何自动生成PHP代码的过程?

时间:2011-06-06 11:24:28

标签: php

我有这个项目,我必须在每个星期天生成一组新的“轮班”。现在我让用户通过输入开始星期日手动完成,然后我的脚本填写直到下周六(例如:用户填写“从[6月]的[5]生成班次”然后它将会产生从6月(太阳)到6月11日(坐着)的转变。

班次生成:

function generateShifts($day_start, $month, $year)
{
    global $months, $month_lengths, $days, $times, $positions;
    $f = 0;
    $day = $day_start;
    for($i = $day_start; $i < ($day_start + 7); $i++)
    {
        if($day > $months[$month-1]["length"]) //are we entering a new month?
        {
            $day = 1;
            $month++;
        }
        if($month > 12) //are we entering a new year?
        {
            $month = 1;
            $year++;
        }
        for($p = 0; $p < count($positions); $p++)
        {
            for($t = 0; $t < count($times); $t++)
                $sql = mysql_query("INSERT INTO `shifts` (position, day, month, year, time, full_day) VALUES ('". $positions[$p] ."', '". $day ."', '". $month ."', '". $year ."', '". $times[$t] ."', '". $days[$f] ."')");
        }
        $f++;
        $day++;
    }
} 

班次具有某些属性,例如位置,日,月,年,时间(例如:上午6点至下午4点等)和唯一ID。日,月和年是数字,并且是D-M-YY格式(例如:6-6-11)。我有他们的名字的数组,简短的格式,如Jun,Jul,Aug等(所以在第6个月我会做$ month_names [$ row [“month”] - 1](-1因为数组从索引开始0,当然)那会让我“君”。

现在我想自动执行此过程,以便每周日自动生成一周的新班次。如果这是一个选项,我就不能使用cron作业。它需要是纯HTML / JS / PHP。

我不是要求完整的脚本,只是为了正确的方向。

3 个答案:

答案 0 :(得分:0)

除非您让浏览器运行一整周,否则您将无法自动执行此操作。或者您可以在您的站点中的某个位置插入此代码,以便用户在不知道事件的情况下执行它(如果您需要在此方法中更新这些列表,请不要忘记添加检查)。

此外,您可以查找“cron job”API提供程序(站点会在所需的时间调用您的脚本)。

答案 1 :(得分:0)

如果我理解正确,你只需要每周调用一次这个函数,但这个函数的结果不太可能改变。

我可以看到多个解决方案(省略cron):

  • 要么强制管理员每周执行一次,否则会导致应用程序失败
  • 或(同时Valdas建议,对不起这里的双重答案)你在包含文件中的某个地方透明地做(快速和肮脏的解决方案,肯定会在某些时候失败)
  • 或(最佳解决方案恕我直言),您只需提前生成未来一年的班次。

答案 2 :(得分:0)

您可以在代码中创建一种cron。

  1. 检查作业是否已在本周的每个页面加载上运行。
  2. 如果没有,则运行提供的功能
  3. 检查每个页面加载(可以忽略不计)的开销和运行该页面加载的作业的开销。