Awal minggu ini, semasa bekerja dengan API Laravel Rest, saya mengalami gangguan dalam bentuk ralat tamat masa. Ia membawa kepada kekecewaan pengguna akhir dengan kebimbangan pembangunan. Biar saya ringkaskan jumlah senario:
Saya perlu memuatkan data daripada sumber data luaran, menapisnya, kemudian menyediakannya untuk pemulangan json. Jumlah data tidak besar, hanya sekitar 10K dalam satu permintaan. Masalah utama berlaku apabila saya cuba memformatnya selepas mendapatkan dan menapisnya. Jadi, saya mula menyahpepijat menggunakan langkah berikut:
Semak pertanyaan dioptimumkan dan lajur juga diindeks.
Pastikan penggunaan kaedah chunk
Semak repo pemformatan tidak menggunakan sebarang kaedah/rujukan/pelaksanaan/fungsi yang tidak digunakan/panggilan api luaran.
Semua semakan telah dilakukan tetapi masih menunjukkan Ralat Tamat Masa Gerbang kerana ia melebihi 1 minit. Kelas perkhidmatan kelihatan seperti di bawah:
Kelas repo kelihatan seperti di bawah:
Secara mata kasar, Ia tidak sepatutnya membuang ralat tamat masa untuk 10K+ pemprosesan dan manipulasi data. Kami akan membincangkan pada akhirnya mengapa ia berlaku (mungkin bukan sebab konkrit sebenar tetapi berkemungkinan) dan kini membincangkan cara saya menyelesaikannya menggunakan Sumber Laravel Api.
Mudah untuk dilaksanakan. Mula-mula, jana Sumber Laravel Api daripada baris arahan:
php artisan make:resource DataFormatterResource
Kemudian, hantar objek model anda ke sumber dan format/manipulasi data anda mengikut keperluan yang diberikan di bawah:
Anehnya, Ia hanya mengambil masa 3.7 saat untuk membalas ?!
Saya cuba mencungkil isu sebenar di sini dan menemui beberapa kes berkemungkinan yang disebut di atas untuk ditakrifkan pada penghujungnya. Kes diberikan:
Pada kebanyakan perkhidmatan projek saya, saya menggunakan repo atau pemformat berfungsi pada lapisan perkhidmatan, tetapi dalam kes ini, saya menghadapi kesukaran yang mungkin terdapat punca lain untuk isu ini berlaku.
Apa yang ingin saya tekankan ialah Sumber Laravel mungkin berguna dalam beberapa situasi rumit apabila bekerja dengan model.
Jika anda suka artikel ini tinggalkan tepuk tangan atau komen. = “Selamat pengekodan!….” ?>
Atas ialah kandungan terperinci Sumber Laravel atau Repo Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!