Rumah >pembangunan bahagian belakang >tutorial php >Penjejakan lokasi masa nyata menggunakan PHP dan MQTT

Penjejakan lokasi masa nyata menggunakan PHP dan MQTT

WBOY
WBOYasal
2023-07-10 09:42:08977semak imbas

Gunakan PHP dan MQTT untuk melaksanakan fungsi penjejakan lokasi masa nyata

Dengan perkembangan pesat Internet of Things, fungsi penjejakan lokasi masa nyata telah menjadi aplikasi yang semakin popular. Dengan menggunakan protokol PHP dan MQTT, kami boleh melaksanakan fungsi penjejakan lokasi masa nyata dengan mudah. Artikel ini akan memperkenalkan anda kepada cara menggunakan kedua-dua alatan ini untuk mencapai fungsi ini dan memberikan contoh kod yang sepadan.

Pertama sekali, kita perlu memahami konsep asas PHP dan MQTT.

PHP ialah bahasa skrip sebelah pelayan yang popular digunakan secara meluas untuk pembangunan web. Ia mudah dipelajari, berkuasa dan digunakan secara meluas. Dalam artikel ini, kami akan menggunakan PHP untuk memproses dan membalas data lokasi.

MQTT ialah protokol pemesejan terbitan/langganan ringan yang asalnya direka untuk aplikasi IoT dalam persekitaran rangkaian jalur lebar rendah dan tidak boleh dipercayai. Ia menggunakan topik antara penerbit dan pelanggan untuk melaksanakan penghantaran mesej. Dalam artikel ini, kami akan menggunakan MQTT untuk melaksanakan penghantaran masa nyata data lokasi.

Seterusnya, mari kita lihat cara menggunakan PHP dan MQTT untuk melaksanakan penjejakan lokasi masa nyata.

Pertama, kita perlu memasang dan mengkonfigurasi pelayan proksi MQTT. Kita boleh menggunakan sumber terbuka Mosquitto atau HiveMQ untuk membina pelayan proksi MQTT. Di sini, kami mengambil Mosquitto sebagai contoh untuk menggambarkan.

  1. Memasang Mosquitto
    Mula-mula, kita perlu memuat turun dan memasang Mosquitto daripada laman web rasmi Mosquitto. Proses pemasangan adalah berkaitan dengan sistem pengendalian Anda boleh merujuk kepada dokumentasi rasmi untuk operasi.
  2. Mengkonfigurasi Nyamuk
    Selepas pemasangan selesai, kita perlu mengedit fail konfigurasi Mosquitto. Buka fail mosquitto.conf, cari kandungan berikut dan konfigurasikannya.

    pendengar 1883
    allow_anonymous true

    Di sini, kami menggunakan port MQTT lalai 1883 dan membenarkan akses tanpa nama.

  3. Mulakan Nyamuk
    Selepas konfigurasi selesai, kita boleh mulakan perkhidmatan Nyamuk. Jalankan arahan berikut dalam terminal:

    mosquitto

    Pelayan Mosquitto akan berjalan di latar belakang dan mendengar sambungan daripada pelanggan.

Seterusnya, mari kita lihat cara menggunakan PHP untuk memproses dan membalas data lokasi.

  1. Pasang sambungan PHP MQTT
    Mula-mula, kita perlu memasang sambungan PHP MQTT. Buka terminal dan jalankan arahan berikut:

    pecl install Mosquitto-alpha

    Selepas pemasangan selesai, tambah baris berikut dalam fail php.ini:

    extension=mosquitto.so

    Kemas kini konfigurasi PHP dan mulakan semula pelayan web.

  2. Sambung ke pelayan proksi MQTT
    Dalam kod PHP, kita boleh menggunakan kelas Mosquitto untuk menyambung ke pelayan proksi MQTT. Berikut ialah contoh kod:

    <?php
    
    $mqtt = new MosquittoClient();
    
    // 连接到MQTT代理服务器
    $mqtt->connect('localhost', 1883);
    
    // 设置订阅主题和消息回调函数
    $mqtt->subscribe('/location', 0);
    $mqtt->onMessage(function($message) {
        // 处理位置数据
        $location = json_decode($message->payload, true);
        // 执行相应操作,如保存位置数据到数据库
    });
    
    // 持续监听MQTT消息
    while(true) {
        $mqtt->loop();
    }
    
    $mqtt->disconnect();
    
    ?>

    Dalam kod sampel ini, kami mula-mula mencipta contoh klien Mosquitto dan kemudian menggunakan kaedah connect untuk menyambung ke pelayan proksi Mosquitto. Seterusnya, kami menggunakan kaedah langgan untuk melanggan topik dan menggunakan kaedah onMessage untuk menetapkan fungsi panggil balik mesej. Dalam fungsi panggil balik kita boleh memproses dan bertindak balas kepada data lokasi. Akhir sekali, kami menggunakan kaedah gelung untuk mendengar mesej MQTT secara berterusan. connect方法连接到Mosquitto代理服务器。接下来,我们使用subscribe方法来订阅一个主题,并使用onMessage方法设置消息的回调函数。在回调函数中,我们可以处理和响应位置数据。最后,我们使用loop方法来持续监听MQTT消息。

  3. 发布位置数据
    在生产环境中,我们通常通过传感器或其他设备来获取位置数据,并通过MQTT协议将位置数据发布到指定的主题上。以下是一个示例代码:

    <?php
    
    $mqtt = new MosquittoClient();
    
    // 连接到MQTT代理服务器
    $mqtt->connect('localhost', 1883);
    
    // 发布位置数据到指定主题
    $location = array('latitude' => 28.7041, 'longitude' => 77.1025);
    $mqtt->publish('/location', json_encode($location), 0);
    
    $mqtt->disconnect();
    
    ?>

    在这个示例代码中,我们首先创建了一个Mosquitto客户端的实例,并使用connect方法连接到Mosquitto代理服务器。然后,我们使用publish

Terbitkan data lokasi

Dalam persekitaran pengeluaran, kami biasanya mendapatkan data lokasi melalui penderia atau peranti lain dan menerbitkan data lokasi ke topik yang ditetapkan melalui protokol MQTT. Berikut ialah contoh kod:

rrreee

Dalam kod sampel ini, kami mula-mula mencipta instance klien Mosquitto dan menyambung ke pelayan proksi Mosquitto menggunakan kaedah connect. Kami kemudian menggunakan kaedah publish untuk menerbitkan data lokasi ke topik yang ditentukan.

🎜🎜🎜Melalui langkah di atas, kami boleh melaksanakan fungsi penjejakan lokasi masa nyata dengan mudah menggunakan PHP dan MQTT. Menggunakan MQTT sebagai protokol pemesejan membolehkan penghantaran data lokasi kependaman rendah dan konkurensi tinggi. Pada masa yang sama, PHP, sebagai bahasa skrip sebelah pelayan, boleh memproses dan bertindak balas kepada data lokasi dengan mudah. 🎜🎜Untuk meringkaskan, dengan menggunakan PHP dan MQTT, kami boleh melaksanakan fungsi penjejakan lokasi masa nyata yang mudah tetapi berkuasa. Saya harap kandungan artikel ini dapat membantu anda. Jika anda mempunyai sebarang soalan atau cadangan, sila hubungi kami. Terima kasih! 🎜

Atas ialah kandungan terperinci Penjejakan lokasi masa nyata menggunakan PHP dan MQTT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn