gpt4 book ai didi

使用 ignore_abort_user() 的 PHP 后台脚本不起作用

转载 作者:行者123 更新时间:2023-11-30 22:40:34 24 4
gpt4 key购买 nike

我有一个 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 但我将迭代时间保持得更小以查看更改。

最佳答案

你的循环永远不会结束。

这是因为您的更新查询不会自动更新为变量 $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);

关于使用 ignore_abort_user() 的 PHP 后台脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com