Como agendar funções dinâmicas com o cron job?
Quero saber como posso agendar uma função dinâmica (dados preenchidos automaticamente) para executar automaticamente todos os dias no tempo economizado?
Digamos que eu tenho um formulário que, quando o botão é clicado, ele envia os dados para a função, que os publica. Eu simplesmente quero automatizar isso para não precisar pressionar o botão.
<ul>
<?php
foreach($Class->retrieveData as $data)
{
<form method="post" action="">
<li>
<input type="hidden" name="name">'.$data['name'].'<br/>
<input type="hidden" name="description">'.$data['description'].'<br/>
<input type="submit" name="post_data" value="Post">
</li>
</form>
}
?>
</ul>
Agora, o formulário passará os dados para a função.
if(isset($_POST['post_data'])) // if post_data button is clicked then it runs myFunction()
{
myFunction();
}
myFunction()
{
$name = $_POST['name'];
$description = $_POST['description'];
}
Tentei fazer o seguinte, mas o problema é que o Cron Job só pode executar o arquivo .php inteiro e estou recuperando o tempo economizado para executar no MySQL.
foreach($Class->getTime() as $timeData)
{
$timeHour = $timeData['timeHour'];
$timeMinute = $timeData['timeMinute'];
$hourMin = date('H:i');
$timeData = ''.$timeHour.':'.$timeMinute.'';
if($hourMin == $timeData)
{
run myFunction.
}
}
$hourMin
é a hora atual: minuto que está sendo comparado com um tempo economizado para executar automaticamente a partir do Mysql. Então se$hourMin == $timeData
então a função será executada.
Como posso executar o Cron Job para executar automaticamentemyFunction()
se o$hourMin
é igual a$timeData
?
Assim...
List 1 = is to be runned at 10am
List 2 = is to be runned at 12pm
List 3 = is to be runned at 2pm
o10am, 12pm, 2pm
é o$timeHour
e$timeMinute
que é recuperado do MySQL, mas com base nos IDs de cada lista.
@randomSeed,
1) I can schedule cron jobs.
2) $name and $description will all be arrays, so the following is what I am trying to accomplish.
$name = array(
'Jon',
'Steven',
'Carter'
);
$description = array(
'Jon is a great person.',
'Steven has an outgoing character.',
'Carter is a horrible person.'
);
Desejo analisar as primeiras matrizes de $ name e $ description se o horário agendado estiver correto.
No banco de dados, tenho o seguinte
postDataTime table
+----+---------+----------+------------+--------+
| iD | timeDay | timeHour | timeMinute | postiD |
+--------------------------------------+--------+
| 1 | * | 9 | 0 | 21 |
|----|---------|----------|------------|--------|
| 2 | * | 10 | 30 | 22 |
|----|---------|----------|------------|--------|
| 3 | * | 11 | 0 | 23 |
+----|---------+----------+------------+--------+
iD = auto incremented on upload.
timeDay = * is everyday (cron job style)
timeHour = Hour of the day to run the script
timeMinute = minute of the hour to run script
postiD = this is the id of the post that is located in another table (n+1 relationship)
Se é difícil de entender ..o que é quinoa
if(time() == 10:30(time from MySQL postiD = 22))
{
// run myFunction with the data that is retrieved for that time ex:
$postiD = '22';
$name = 'Steven';
$description = 'Steven has an outgoing character.';
// the above is what will be in the $_POST from the form and will be
// sent to the myFunction()
}
Eu simplesmente quero agendar tudo de acordo com o tempo que é salvo no MySQL, como mostrei no topo (tabela postDataTime). (Mostraria o que tentei, mas procurei inúmeras horas por um exemplo do que estou tentando realizar, mas não consigo encontrar nada e o que tentei não funciona.).
Eu pensei que poderia usar a função exec (), mas pelo que parece, não me permite executar funções, caso contrário, eu faria o seguinte ..
$time = '10:30';
if($time == time())
{
exec(myFunction());
}