Dalam PHP, mensiri dan menyimpan pelbagai objek dalam fail atau pangkalan data ialah cara biasa untuk mengekalkan data. Deserialisasi ialah proses membaca semula dan memulihkan tatasusunan objek yang disimpan ke dalam tatasusunan objek PHP. Walau bagaimanapun, untuk tatasusunan objek yang besar, kecekapan penyahserikatan biasanya sangat rendah, sekali gus menjejaskan prestasi keseluruhan sistem. Oleh itu, artikel ini akan memperkenalkan beberapa amalan terbaik untuk menyahsiri tatasusunan objek PHP untuk membantu pembangun mengoptimumkan prestasi sistem.
Dalam PHP, serialisasi ialah proses menukar objek kepada rentetan yang boleh disimpan. PHP menyediakan fungsi bersiri terbina dalam Serialize() dan fungsi deserialisasi Unserialize(). Untuk mensirikan tatasusunan objek, hanya hantarkannya sebagai parameter kepada Serialize(). Contohnya:
$data = array( new MyClass('foo', 'bar'), new MyClass('baz', 'qux') ); $serializedData = serialize($data);
Kod di atas akan menyerikan tatasusunan objek $data dan menyimpannya dalam rentetan $serializedData. Untuk memulihkan tatasusunan objek ini apabila diperlukan, hanya gunakan fungsi Unserialize():
$unserializedData = unserialize($serializedData);
Kaedah ini agak mudah dan mudah, tetapi untuk tatasusunan objek yang besar, penyahserikatan akan menjadi tidak cekap dan terdedah kepada versi PHP dan sekatan sambungan.
Tidak seperti fungsi Serialize(), JSON ialah format pertukaran data ringan yang mudah dibaca dan dihuraikan. JSON menyahsiri lebih cepat daripada fungsi bersiri, jadi ia boleh menjadi alternatif yang lebih baik. Untuk menyerikan tatasusunan objek PHP ke dalam format JSON, anda boleh menggunakan fungsi json_encode(). Contohnya:
$data = array( new MyClass('foo', 'bar'), new MyClass('baz', 'qux') ); $serializedData = json_encode($data);
Ini menyerikan tatasusunan objek $data ke dalam format JSON dan menyimpannya dalam rentetan $serializedData. Untuk memulihkan tatasusunan objek, hanya gunakan fungsi json_decode() :
$unserializedData = json_decode($serializedData);
Berbanding dengan fungsi Serialize(), menggunakan JSON adalah lebih cekap, tetapi perlu diperhatikan bahawa jika struktur tatasusunan objek adalah kompleks , di sana Mungkin terdapat masalah apabila menggunakan fungsi json_encode().
Dalam persekitaran pengeluaran, menggunakan cache ialah kaedah pengoptimuman prestasi yang berkesan. Oleh itu, kita boleh menyimpan tatasusunan objek yang tidak bersiri dalam cache untuk bacaan pantas. Pendekatan ini boleh dilaksanakan menggunakan sambungan cache seperti Memcached atau Redis, dsb. Kita boleh menggunakan ID tatasusunan objek sebagai kunci cache untuk mendapatkan objek berkaitan dengan cepat. Contohnya:
$data = array( new MyClass('foo', 'bar'), new MyClass('baz', 'qux') ); $cache = new Memcached(); $cache->addServer('localhost', 11211); foreach ($data as $key => $value) { $cache->set("data$key", serialize($value)); }
Dalam kod di atas, kami menyusun dan menyimpan setiap objek dalam tatasusunan objek $data dalam Memcached.
Untuk mendapatkan semula tatasusunan objek dalam cache, anda boleh menggunakan kod berikut:
$data = array(); $cache = new Memcached(); $cache->addServer('localhost', 11211); $keys = $cache->getAllKeys(); foreach ($keys as $key) { if (strpos($key, 'data') !== false) { $data[] = unserialize($cache->get($key)); } }
Kod di atas mendapat semua kunci yang diawali dengan "data" dalam cache dan menukar nilainya yang sepadan (iaitu Objek urutan) dinyahsiri menjadi pelbagai objek.
Kesimpulan
Artikel ini memperkenalkan tiga amalan terbaik untuk menyahsiri tatasusunan objek dalam PHP, yang boleh membantu anda meningkatkan prestasi sistem. Fungsi Serialize() dan JSON ialah kedua-dua ciri bahasa terbina dalam PHP dan agak mudah untuk digunakan. Selain itu, caching juga merupakan pilihan yang baik, terutamanya apabila tatasusunan objek yang besar perlu dibaca dengan kerap. Kaedah yang mana untuk dipilih bergantung pada keperluan pembangun dan persekitaran sistem, dan pelbagai faktor perlu ditimbang berdasarkan situasi sebenar.
Atas ialah kandungan terperinci Amalan terbaik untuk penyahserikatan tatasusunan objek PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!