很多站长朋友们都不太清楚php队列触发器,今天小编就来给大家整理php队列触发器,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php触发器怎么做 2、 php 触发器 update 3、 php+myql数据库触发器怎么写 4、 php 输出触发器 php触发器怎么做PHP的定时任务可以使用以下几个函数实现。
ignore_user_abort()
set_time_limit(0)
sleep(60*10)
此代码只要运行一次后关闭浏览器即可。
ignore_user_abort();//关掉浏览器,PHP也会继续执行
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行
do{
//业务逻辑代码
sleep(60*10);// 等待5分钟后再次运行
}while(true);
如果你有对服务器操作的权限,还是建议用系统的Cron来写比较适合。
对于你后面的问题我最好还是通过直接调你写的接口比较合适,当然我不太明白你说的对方直接把数据入到你的数据库和PHP触发器有什么关系。
php 触发器 updatemysql的恶习,是
book_phone_number=new.phone_number
where book_user=old.user_name;
这句的问题,没法儿帮你改,你自己研究吧,new.phone_number后面没有逗号,然后怎么冷不丁冒出个where来呢
php+myql数据库触发器怎么写如果公司里有上百个表要做触发器,如果手动写代码的话。很累,一个小程序,自动生成mysql的触发代码。
<?php
$dbname = 'test';//数据库
$tab1 = 'user'; //执行的表
$tab2 = 'user_bak'; //被触发的表
$conn = mysql_connect("localhost","root", "root",$dbname) or
die("请检查你的主机名数据库用户名和密码");
mysql_select_db($dbname, $conn) or die("数据库还没有连接");
$query = mysql_query("SHOW COLUMNS FROM $tab1");mysql_query("");
while($row=mysql_fetch_array($query,MYSQL_NUM)){//得到表的字段数组
$temp[] = $row[0];
$str1 .= '`'.$row[0].'`,';
$str2 .= 'new.'.$row[0].',';
$str3 .= $row[0].'=new.'.$row[0].',';
}
//insert触发器
$inser_str = "<h1>{$tab1}表的insert触发器</h1>";
$inser_str .= "create trigger ".$tab1."_insert <br>AFTER INSERT
<br>on ".$tab1."<br>";
$inser_str .="for each row<br> INSERT INTO {$tab2}
(".rtrim($str1,',').') VALUES ('.rtrim($str2,',').');';
//update触发器
$update_str = "<h1>{$tab1}表的update触发器</h1>";
$update_str .= "create trigger ".$tab1."_update<br>";
$update_str .= "after update<br>";
$update_str .= "on ".$tab1.'<br>';
$update_str .= "for each row<br>";
$update_str .= "update ".$tab2." set ".rtrim($str3,',')." where id =
new.id;//这里的where id = new.id要手动改一下。改成主键的字段名";
//delete触发器
$delete_str = "<h1>{$tab1}表的delete触发器</h1>";
$delete_str .= "create trigger ".$tab1."_delete<br>";
$delete_str .= "after delete<br>";
$delete_str .= "on ".$tab1."<br>";
$delete_str .= "for each row <br>";
$delete_str .= "delete from ".$tab2." where id=OLD.id//这里的where id =
new.id要手动改一下。改成主键的字段名<br>";
echo $inser_str;
echo $update_str;
echo $delete_str;
echo
'<p>注意:<br>1.触发器可用于InnoDB或MyISAM类型的表<br>2.插入的时候用AFTER INSERT
更好的保证数据ID的对应,如果用before
INSERT有可能造成ID不对应<br>3.如new.id则是表示主表中的字段<br>4.sql语句太多,用
begin..end<br>5.使用show triggers语句查看数据库中的触发器。<br>6.删除触发器DROP TRIGGER
IF EXISTS `test`<br>7.作者:<a
href="">华夏之星</a>';
echo <<<EOT
<h3>语法:</h3>
create trigger <触发器名称><br>
{ before | after}<br>
{insert | update | delete}<br>
on <表名><br>
for each row<br>
<触发器SQL语句><br>
参数详解如下:<br>
create trigger <触发器名称>:创建一个新触发器,并指定触发器的名称。<br>
{ before | after}:用于指定在insert、update或delete语句执行前触发还是在语句执行后触发。<br>
on <表名>:用于指定响应该触发器的表名。<br>
for each row:触发器的执行间隔,for each row
通知触发器每隔一行执行一次动作,而不是对整个表执行一次。<br>
<触发器SQL语句>:触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin…end块中。
<br>如:begin…end块(它不能上phpadmin上运行。因为phpmyadmin没有对begin...end解析。)<br>
mysql_query("<br>
create trigger user_delete<br>
after delete<br>
on user<br>
for each row BEGIN<br>
delete from user_bak where id=OLD.id;<br>
delete from aaa where id=OLD.id;<br>
END;");<br>
<br><br><br><br>
EOT;
?>
php 输出触发器ob_start函数可能可以可以满足你的需求。
ob_start("func_call_back");
function func_call_back($buffer)
{
return $buffer.$buffer;
}
希望能帮到你。
关于php队列触发器的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php队列触发器 php队列排队处理数据的详细内容...