php - 为什么我的 API 需要 2-3 秒来处理一个请求?
问题描述
我的 API 有问题。我用 lumen 构建 API 并为我的数据库使用了 sql server。所以这个API有一个插入数据的功能。但是在插入数据之前,我的应用程序会检查数据是否插入了任何具有相同参数的数据。
问题是每次发送到我的 API 的请求都需要 2-3 秒来处理。当我用我的日志进行跟踪时,它显示检查重复数据时需要 1 秒,保存数据时需要 1 秒。
有没有更好的性能建议?我想用 php 来考虑 noSQL。它比sql server更强大吗?
有关信息,我与多个应用程序一起使用的数据库连接到它。谢谢
这是我的代码
$getSameSppa = Sppa::where('nosppa', $SppaData->SPPA)
->whereNotNull('policyno')
->get();
if($getSameSppa->count() > 0){
$PolicyNo = $getSameSppa[0]->policyno;
$return['data'] = array(
'ID' => property_exists($SppaData, 'ID') ? $SppaData->ID:'',
'SppaNo' => $SppaData->SPPA,
'PolicyNo' => $PolicyNo
);
$return['response_code'] = env('BRI_RESPONSE_CODE_DUPLICATE','02');
$return['message'] = 'SPPA sudah pernah disubmit';
Facades\Log::info('SPPA sudah pernah disubmit', $return);
}
else{
Facades\Log::info('SPPA belum pernah disubmit');
// delete SPPA dengan nomor polis kosong
Sppa::where('nosppa', $SppaData->SPPA)
->whereNull('policyno')
->delete();
$nomorPolis = $this->_generate_policy_number($SppaData->MAKER_BRANCH_CODE, $SppaData->KODE_PRODUK, $SppaData->SPPA);
Facades\Log::info('Generate nomor polis berhasil');
try {
$insertSppa = new Sppa();
$insertSppa->nosppa = $SppaData->SPPA;
$insertSppa->urutansppa = $SppaData->URUTAN_SPPA;
$insertSppa->norekpinjaman = $SppaData->NOREK_PINJAMAN;
$insertSppa->noreksimpanan = '';
$insertSppa->kodeuker = sprintf('%05d', $SppaData->MAKER_BRANCH_CODE);
$insertSppa->kodeproduk = $SppaData->KODE_PRODUK;
$insertSppa->jenisproduk = $SppaData->JENIS_PRODUK;
$insertSppa->tanggalentri = $SppaData->SPV_DATE;
$insertSppa->periodeawal = $SppaData->PERIODE_MULAI_PERTANGGUNGAN;
$insertSppa->periodeakhir = $SppaData->PERIODE_AKHIR_PERTANGGUNGAN;
$insertSppa->tanggalrealisasipinjaman = $SppaData->TANGGAL_REALISASI_PINJAMAN;
$insertSppa->jangkawaktupinjamanbulan = $SppaData->JANGKA_WAKTU_PINJAMAN_BULAN;
$insertSppa->jangkawaktupinjamantahun = $SppaData->JANGKA_WAKTU_PINJAMAN_TAHUN;
$insertSppa->loantypepinjaman = $SppaData->KODE_LOANTYPE;
$insertSppa->namatertanggung = $SppaData->NAMA_SIMPANAN;
$insertSppa->alamattertanggung = $SppaData->ALAMAT_SIMPANAN;
$insertSppa->tanggallahir = $SppaData->TANGGAL_LAHIR_SIMPANAN;
$insertSppa->lokasiresiko = $SppaData->ALAMAT_RESIKO;
$insertSppa->alamattempatusaha = $SppaData->ALAMAT_TEMPAT_USAHA;
$insertSppa->notelp = $SppaData->NOMOR_HANDPHONE_SIMPANAN;
$insertSppa->email = $SppaData->EMAIL_SIMPANAN;
$insertSppa->noktp = $SppaData->NO_IDENTITAS_SIMPANAN;
$insertSppa->cif = $SppaData->CIF_SIMPANAN;
$insertSppa->cifpinjaman = $SppaData->CIF_PINJAMAN;
$insertSppa->kodepos = $SppaData->KODEPOS_SIMPANAN;
$insertSppa->kodeposresiko = $SppaData->KODEPOS_RESIKO;
$insertSppa->kodepostempatusaha = $SppaData->KODEPOS_TEMPAT_USAHA;
$insertSppa->policyno = $nomorPolis;
$insertSppa->namaahliwaris = substr($SppaData->NAMA_AHLI_WARIS, 0, 49);
$insertSppa->alamatahliwaris = $SppaData->ALAMAT_AHLI_WARIS;
$insertSppa->notelpahliwaris = $SppaData->NOMOR_TELPON_AHLI_WARIS;
$insertSppa->hubungan = $SppaData->HUBUNGAN_AHLI_WARIS;
$insertSppa->tgl_terima_sppa = date('Y-m-d H:i:s');
$saveSppa = $insertSppa->save();
Facades\Log::info('Simpan SPPA berhasil');
} catch (\PDOException $ex) {
$return['data'] = array(
'ID' => property_exists($SppaData, 'ID') ? $SppaData->ID:'',
'SppaNo' => $SppaData->SPPA,
'PolicyNo' => ''
);
$return['message'] = 'Gagal simpan data SPPA';
$return['exception'] = $ex->getMessage();
$saveSppa = FALSE;
Facades\Log::error('Simpan SPPA gagal', $return);
}
解决方案
我找到了解决方案,当我在用于检查重复数据的字段中添加索引时,处理速度更快。现在一击需要一秒钟或更短的时间。
推荐阅读
- java - 无法确定类型:org.json.JSONObject,表:ordersinfo,列:[org.hibernate.mapping.Column(items)]
- reactjs - React 类型文件在 React TypeScript (.tsx) 文件中不起作用 - 为 React 组件引发 ESLint 错误
- node.js - 使用 Checkout 在 Stripe 中的发票上显示增值税
- python - 无法连接无法公开访问的 redshift 集群
- angularjs - 是否有针对 angularjs 的 apollo 客户端的任何文档?我搜索了整个互联网,但我只能看到 Angular2+ 文档
- c# - NewtonSoft Json转换列表
- javascript - JQuery Mobile 对“导航”的回调未执行
- node.js - 如何在 post 方法中传递一个对象并直接检索它?
- html - 如何嵌入外部 html 并更改 css 样式?
- java - 为 Java 中的每个单元测试重新初始化枚举值