Eu tenho dois arquivos, que precisam ser executados todas as noites.
O arquivo PHP contém os registros mais recentes do banco de dados e cria um arquivo de origem no mesmo diretório.
E um arquivo normal, ainda não é executado.
Eu tentei fazer check-in em /var/log/syslog
. achei isso abaixo.
Jul 29 13:56:01 ocs2 CRON[7016]: (root) CMD (/opt/lampp/bin/php /opt/lampp/htdocs/ats/cron_jobs/export_db_elastic.php)
Jul 29 13:57:01 ocs2 CRON[7118]: (root) CMD (source /opt/lampp/htdocs/ats/cron_jobs/tt2)
Jul 29 13:57:01 ocs2 CRON[7117]: (CRON) info (No MTA installed, discarding output)
$db = mysqli_connect($host, $username, $password, $database) or die('Error connecting to DB : ' . mysqli_error($db));
$q1 = "select * from elasticsearch_record where id = 1";
$q2 = "select max(id) as 'max_num' from resumes";
$r1 = mysqli_query($db, $q1);
$r2 = mysqli_query($db, $q2);
if ($r1->num_rows > 0) {
$rd1 = mysqli_fetch_array($r1);
$rd2 = mysqli_fetch_array($r2);
$start = $rd1['max_count'];
$end = $rd2['max_num'];
$one_up = $end + 1;
$q3 = "update elasticsearch_record set max_count = '$one_up' where id = 1";
$r3 = mysqli_query($db, $q3);
$string1 = "bin=/root/elasticsearch-jdbc-1.6.0.0/bin\n";
$string1 .= "lib=/root/elasticsearch-jdbc-1.6.0.0/lib\n";
$string1 .= "echo '{\n";
$string1 .= "\"type\" : \"jdbc\",\n";
$string1 .= "\"jdbc\" : {\n";
$string1 .= "\"url\" : \"jdbc:mysql://192.168.1.17:3306/c270751_resume\",\n";
$string1 .= "\"user\" : \"ServerUser\",\n";
$string1 .= "\"password\" : \"passwordhere\",\n";
$string1 .= "\"sql\" : \"select * from resumes limit $start, $end\",\n";
$string1 .= "\"index\" : \"rforceresumes\",\n";
$string1 .= "\"type\" : \"resumetype\"\n";
$string1 .= "}\n";
$string1 .= "}' | java \\n";
$string1 .= "-cp \"\${lib}/*\" \\n";
$string1 .= "-Dlog4j.configurationFile=\${bin}/log4j2.xml \\n";
$string1 .= "org.xbib.tools.Runner \\n";
$string1 .= "org.xbib.tools.JDBCImporter";
// echo "<pre>$string1</pre>";
$myfile = fopen("tt2", "w") or die("Unable to open file!");
fwrite($myfile, $string1);
fclose($myfile);
} else {
die("Do Nothing");
}
bin=/root/elasticsearch-jdbc-1.6.0.0/bin
lib=/root/elasticsearch-jdbc-1.6.0.0/lib
echo '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://192.168.1.17:3306/c270751_resume",
"user" : "ServerUser",
"password" : "passwordhere",
"sql" : "select * from resumes limit 1, 222504",
"index" : "rforceresumes",
"type" : "resumetype"
}
}' | java \
-cp "${lib}/*" \
-Dlog4j.configurationFile=${bin}/log4j2.xml \
org.xbib.tools.Runner \
org.xbib.tools.JDBCImporter
Agora, sinto que esses arquivos não estão sendo executados com o CRON, mesmo que sejam exibidos em arquivos de log.
Porque, normal file
data modificada não reflete.
56 13 * * * /opt/lampp/bin/php /opt/lampp/htdocs/ats/cron_jobs/export_db_elastic.php
57 13 * * * source /opt/lampp/htdocs/ats/cron_jobs/tt2
Eu não tenho ideia, nem pensei. Eu verifiquei meu código muito tempo. Por que não é executado corretamente?
Quando eu o executo manualmente pelo terminal ou navegador. está funcionando perfeitamente.