我有一个PHP脚本,它接受输入并将其插入到mysql数据库中。一旦表中的条目完成,该脚本就会使用shell_exec()调用另一个脚本。这是第一个php脚本:
if(isset($_POST['post_arg'])){
$theme = $_POST['topic_theme'];
$des = $_POST['detail'];
$hrs_to_go = 36;
$t = time();
$conn = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('topics');
$sql_query = "INSERT INTO `topics`.`theme`(heading, description, hrs_to_go, status, time) VALUES ('$theme', '$des', '$hrs_to_go', 'yes', '$t')";
$ret_val = mysql_query($sql_query, $conn) or die(mysql_error());
$row = mysql_fetch_assoc(mysql_query("SELECT id FROM `theme` where heading = '$theme'"));
$themeID = $row['id'];
shell_exec("php timer_script.php $themeID");
}
我希望我的第二个脚本从我的表中获取时间和hrs_to_go并相应地更新字段hrs_to_go。 但不幸的是,第二个脚本无法正常工作,浏览器继续加载而没有任何重定向。这是第二个脚本:
session_start();
ignore_user_abort(true);
set_time_limit(0);
$interval = 20;
$conn = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('topics');
$sql_query_fectch = "SELECT time, hrs_to_go FROM `theme` WHERE id = '$argv[1]'";
$sql_query_update_status = "UPDATE `theme` SET status = 'no' WHERE id = '$argv[1]'";
$sql_query_update_hours = "UPDATE `theme` SET hrs_to_go = '$h_t_g' WHERE id = '$argv[1]'";
while (1) {
$row = mysql_fetch_assoc(mysql_query($sql_query_fectch));
$h_t_g = (time() - $row['time']) / 3600;
$h_t_g = $row['hrs_to_go'] - $h_t_g;
if($h_t_g == 0){
/*set the status to not-active*/
$result = mysql_query($sql_query_update_status, $conn);
break;
} else {
/*Update the fiel hrs_to_go*/
$result = mysql_query($sql_query_update_hours, $conn);
}
sleep($interval);
unset($row);
}
mysql_close($conn);
虽然我的变量是hrs_togo但我保持较小的iterval时间以查看更改。
答案 0 :(得分:0)
你的循环永远不会结束。
这是因为您的更新查询不会自动使用变量$ h_t_g的新值进行更新。它是第一次设置而且就是它。
检查一下,虽然我还没有检查你是否还有其他任何问题。
session_start();
ignore_user_abort(true);
set_time_limit(0);
$interval = 20;
$conn = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('topics');
$sql_query_fectch = "SELECT time, hrs_to_go FROM `theme` WHERE id = '$argv[1]'";
$sql_query_update_status = "UPDATE `theme` SET status = 'no' WHERE id = '$argv[1]'";
while (1) {
$row = mysql_fetch_assoc(mysql_query($sql_query_fectch));
$h_t_g = (time() - $row['time']) / 3600;
$h_t_g = $row['hrs_to_go'] - $h_t_g;
if($h_t_g == 0){
/*set the status to not-active*/
$result = mysql_query($sql_query_update_status, $conn);
break;
} else {
/*Update the fiel hrs_to_go*/
$result = mysql_query("UPDATE `theme` SET hrs_to_go = '$h_t_g' WHERE id = '$argv[1]'", $conn);
}
sleep($interval);
unset($row);
}
mysql_close($conn);