众所周知MyISAM引擎不支持事务,但是我只是知道不支持事务,并未测试具体的表现是什么,测试代码如下:
try
{
//开启事务
Db::startTrans();
//(1).id为1的数据name字段修改为gao
$isUpdate1 = Db::table('member')->where(['id' => 1])->update([
'name' => 'gao1'
]);
if (!$isUpdate1)
{
throw new Exception('更新第1条数据失败,事务已经回滚.');
}
//(2).id为2的数据name字段修改为chen
$isUpdate2 = Db::table('member')->where(['id' => 2])->update([
'name' => 'chen'
]);
if (!$isUpdate2)
{
throw new Exception('更新第2条数据失败,事务已经回滚.');
}
// 提交事务
Db::commit();
}
catch (Exception $exception)
{
//事务回滚
Db::rollback();
echo $exception->getMessage() . PHP_EOL;
}通过测试发现MyISAM直接忽视开启事务,提交事务,回滚事务,上面的代码相当于你没有写开启事务,提交事务,事务回滚的效果一样,只要有数据库操作一律直接执行。完全等同于下面的代码:
try
{
//(1).id为1的数据name字段修改为gao
$isUpdate1 = Db::table('member')->where(['id' => 1])->update([
'name' => 'gao1'
]);
if (!$isUpdate1)
{
throw new Exception('更新第1条数据失败');
}
//(2).id为2的数据name字段修改为chen
$isUpdate2 = Db::table('member')->where(['id' => 2])->update([
'name' => 'chen'
]);
if (!$isUpdate2)
{
throw new Exception('更新第2条数据失败');
}
}
catch (Exception $exception)
{
echo $exception->getMessage() . PHP_EOL;
} 首先下载wkhtmltox-0.12.4_linux-generic-amd64.tar.xz (不要下载RPM包,依赖太多,需要x-server支持),并解压,执行测试运行正常tar wkhtmltox-0.12.4_linux-generic-amd64.tar.xzcd...
通过经纬度转换为城市名称,并获得城市的编号,通常在全国类型的商城中比较通用。//经纬度转城市名称(返回城市id,城市名称) //$ak开发密钥,$lat纬度,$lng经度,$type返回数据类型 public function getCityName($ak,$lat,$lng)...
通过http推送消息给socket,socket服务再向客户端推送<?php /* * Socket推送 * 请用守护进程方式启动php msgservice.php & (socket只...
php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/* * 获取当前PHP文件名称 */ if (!function_exists('phpself...
PHP不像net支持多继承,自身只支持单继承,为了解决这个问题,php出了Trait这个特性,减少单继承语言的限制。并且能让代码复用率更高。说白了就是一个对象的属性和方法扩展工具一样。例如:trait exts { public f...
在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) { pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...