mysql直接运行函数_使用MySQL INSERT的脚本在我直接运行时起作用,但不作为函数运行...

博主在处理一个PHP脚本,该脚本用于创建数据库查询、插入和更新。当通过Web服务器手动测试时,脚本运行正常,但使用异步cURL函数进行批量处理时,INSERT操作失效,只执行了UPDATE。问题可能在于异步请求的实现上,导致INSERT语句未正确执行。手动测试与异步调用之间的行为差异是问题的关键所在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个脚本可以创建2-3个数据库查询,2个插入和1个更新。

我遇到的问题是,当我通过转到像www.domain.com/handler.php?a=1&b=2&c=3这样的Web服务器页面手动测试脚本时,我完全获得了3个更新。但是当我使用这个函数时,它不起作用......更具体地说,INSERT INTO不起作用。我在数据库中获得了更新,但是没有新的条目。

while (($data = fgetcsv(STDIN)) !== false){

$url='http://domain.com';

$date = date('Y-m-d');

$type = trim($data[0]);

if ($type != ''){

$send_date = $data[2];

$email = $data[4];

$status = $data[7];

$error = $data[8];

$bounce = $data[10];

$ip = $data[14];

$job_id = $data[19];

$params = 'pmta_token='.$pmta_token.'&type='.$type.'&send_date='.$send_date.'&email='.$email.'&status='.$status.'&error='.$error.'&bounce='.$bounce.'&ip='.$ip.'&job_id='.$job_id;

$params= array('server'=>$_SERVER['SERVER_NAME'],'type'=>$data[0],'time'=>$data[1],'message'=>$data[8],'bouncecat'=>$data[10],'jobid'=>$data[19],'domip'=>$data[21]);

$line = $type.','.$email.','.$ip.','.$status.','.$error.','.$bounce.','.$job_id.','.date('c')."\n";

curl_post_async($url, $params);

}

}

function curl_post_async($url, $params){

foreach($params as $key => $val){

if (is_array($val)) $val = implode(',', $val);

$post_params[] = $key.'='.urlencode($val);

}

$post_string = implode('&', $post_params);

$parts=parse_url($url);

$fp = fsockopen($parts['host'],

isset($parts['port'])?$parts['port']:80,

$errno, $errstr, 30);

$out = "POST ".$parts['path']." HTTP/1.1\r\n";

$out.= "Host: ".$parts['host']."\r\n";

$out.= "Content-Type: application/x-www-form-urlencoded\r\n";

$out.= "Content-Length: ".strlen($post_string)."\r\n";

$out.= "Connection: Close\r\n\r\n";

if (isset($post_string)) $out.= $post_string;

fwrite($fp, $out);

fclose($fp);

}我肯定错过了什么!我使用这个函数而不是curl的原因是因为curl需要连接并等待响应时间......这个脚本每分钟处理约2000个请求。

这里是handler.php

这是一个失败,没有输入任何东西到数据库中,没有错误,当我手动做它,它像一个魅力,但使用套接字失败,只有在插入,UPDATE工程通过套接字连接。 ?。?

mysql_connect('localhost','root','');

mysql_select_db('analyzer');

date_default_timezone_set('America/Los_Angeles');

if(isset($_POST['type'])){

$domip = @explode('/',$_POST['domip']);

$server = @strtolower($_POST['server']);

$type = @$_POST['type'];

$time = @$_POST['time'];

$message = @$_POST['message'];

$bouncecat = @$_POST['bouncecat'];

$jobid = @$_POST['jobid'];

$domain = @$domip[0];

$md5 = @$_POST['md5'];

$ip = @$domip[1];

if(isset($_POST['ip'])){$ip=$_POST['ip'];}

}else{

$domip = @explode('/',$_REQUEST['domip']);

$server = @strtolower($_REQUEST['server']);

$type = @$_REQUEST['type'];

$time = @$_REQUEST['time'];

$message = @$_REQUEST['message'];

$bouncecat = @$_REQUEST['bouncecat'];

$jobid = @$_REQUEST['jobid'];

$domain = @$domip[0];

$md5 = @$_REQUEST['md5'];

$ip = @$domip[1];

}

$now=date('Y-m-d H:i');

@mysql_query("INSERT INTO `log` (`type`,`time`,`message`,`cat`,`jobid`,`domain`,`ip`,`server`) VALUES('$type','$time','$message','$bouncecat','$jobid','$domain','$ip','$server')");

if(strpos($message,'ALERT'!==false)){

@mysql_query("INSERT INTO `alerts` (`type`,`time`,`message`,`level`,`value`,`page`) VALUES('error','$now','$message','5','$ip','apps/loganalyzer/incl/datatracker.php')");

}

if($type=='d'){

@mysql_query("UPDATE `$server` SET `delivered`=`delivered`+1 WHERE `time`='$now'");

}elseif(($type=='b')&&($bouncecat!='bad')){

@mysql_query("UPDATE `$server` SET `errored`=`errored`+1 WHERE `time`='$now'");

}elseif(($type=='b')&&($bouncecat=='bad')){

@mysql_query("UPDATE `$server` SET `bounced`=`bounced`+1 WHERE `time`='$now'");

}elseif($type=='c'){

@mysql_query("UPDATE `$server` SET `unsubscribed`=`unsubscribed`+1 WHERE `time`='$now'");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值