123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- use PHPUnit\Framework\TestCase;
- define('APP_ID', 'OrderErr');
- define('BASE_ROOT_PATH', str_replace('/test', '', dirname(__FILE__)));
- require_once(BASE_ROOT_PATH . '/global.php');
- require_once(BASE_CORE_PATH . '/lrlz.php');
- require_once(BASE_ROOT_PATH . '/fooder.php');
- class TestOrderErr extends TestCase
- {
- public static function setUpBeforeClass(): void
- {
- Base::run_util();
- }
- //docker-compose run -d phpcli php /var/www/html/phpunit-9.2.5.phar --filter "/(TestOrderErr::testRecoverPdlog)( .*)?$/" --test-suffix TestOrderErr.php /var/www/html/test
- public function testRecoverPdlog()
- {
- $names = ['4','45','55','81','116'];
- foreach ($names as $name) {
- $filename = BASE_DATA_PATH . "/log/recover/{$name}.log";
- $this->recover($filename);
- }
- }
- private function recover($filename)
- {
- $reader = function ($fp)
- {
- while(!feof($fp))
- {
- $logs = [];
- for ($index = 0; $index < 100 && !feof($fp); $index++) {
- $log = fgets($fp);
- $logs[] = $log;
- }
- yield $logs;
- }
- };
- $filter = function ($lines)
- {
- $logs = [];
- $keys = explode(',','lg_member_id,lg_member_name,lg_add_time,lg_type,lg_order_sn,lg_av_amount,lg_desc,lg_available');
- foreach ($lines as $line)
- {
- $ret = preg_match('/VALUES[^(][(]{1}(?P<value>[^)]+)[)]{1}/u', $line, $matches);
- if($ret) {
- $data = $matches['value'];
- $values = explode(',',$data);
- $conveter = function ($value) {
- $val = trim($value, '\'');
- return $val;
- };
- $values = array_map($conveter,$values);
- $log = array_combine($keys,$values);
- $logs[] = $log;
- }
- }
- return $logs;
- };
- $mod_log = Model();
- $inserter = function ($logs) use ($mod_log)
- {
- // $mod_log->table('acclog')->insertAll($logs);
- foreach ($logs as $log) {
- $mod_log->table('acclog')->insert($log);
- }
- };
- $file = fopen($filename,'r');
- $batches = $reader($file);
- foreach ($batches as $batch) {
- $logs = $filter($batch);
- $inserter($logs);
- }
- fclose($file);
- }
- public function testSQLMatch()
- {
- $line =<<< line
- [cordispatcher 38-123975 2021-12-28 15:22:10 0.261198] ERR: DbError eno=1062 msg=Duplicate entry '2147483647' for key 'lrlz_pd_log.PRIMARY' sql=INSERT INTO `lrlz_pd_log` (lg_member_id,lg_member_name,lg_add_time,lg_type,lg_order_sn,lg_av_amount,lg_desc,lg_available) VALUES ('66025','5d322c4ee98781023b16d9a3c21cbfb4',1640676130,'order_pay','6861760694020130235975',-48,'下单,支付预存款,订单号: 6861760694020130235975','954256.6700')
- line;
- $keys = explode(',','lg_member_id,lg_member_name,lg_add_time,lg_type,lg_order_sn,lg_av_amount,lg_desc,lg_available');
- $ret = preg_match('/VALUES[^(][(]{1}(?P<value>[^)]+)[)]{1}/u', $line, $matches);
- if($ret) {
- $data = $matches['value'];
- $values = explode(',',$data);
- $conveter = function ($value)
- {
- $val = trim($value,'\'');
- return $val;
- };
- $values = array_map($conveter,$values);
- $log = array_combine($keys,$values);
- }
- }
- public function testGetLatestSending()
- {
- $mod = Model();
- $item = $mod->table('refill_detail')->field('min(order_time) as mintime')->where(['order_time' => ['egt',time()-5 * 86400],'order_state'=>30])->find();
- }
- }
|