Bagaimana cara mengeksekusi kode PHP di Linux setiap 500 milidetik?

1

Saya memiliki server http di Linux.
Saya memiliki beberapa kode PHP yang menyimpan variabel ke dalam cache menggunakan memcache dan saya ingin menjalankan kode ini setiap 500 milidetik setiap kali server berjalan, bahkan setelah server restart.
Saya berpikir untuk mengimplementasikan sebuah layanan tetapi saya tidak memiliki banyak pengalaman dengan Linux jadi saya tidak tahu bagaimana melakukan ini atau apakah itu bahkan merupakan pendekatan yang tepat.
Saya juga mendengar tentang cron-job tetapi saya melihat bahwa mereka berjalan dari menit ke menit dan bukan dari detik.
Bagaimana saya bisa menjalankan kode PHP di Linux setiap 500 milidetik (Kode akan sangat membantu)?

Yuval
sumber
Saya mengedit pertanyaan saya
yuval
Tampaknya logis untuk menulis skrip php cli yang hanya akan berjalan dan melakukannya untuk Anda. Anda bisa membuat crontab untuk memastikannya berjalan. Tapi Anda benar, crontab tidak akan memungkinkan Anda untuk melakukan pekerjaan sub-menit, kecuali jika Anda menjalankan banyak dan mengejutkan mereka, yang pada waktu Anda, IMHO adalah ide yang buruk.
Apakah Anda berbicara tentang milidetik karena Anda perlu bahwa presisi? Atau maksud Anda hanya setengah detik?
kos
Saya mungkin membutuhkan presisi milidetik di masa depan sehingga lebih baik melakukannya dengan milidetik.
yuval

Jawaban:

1

Anda bisa menggunakan shell-script sederhana untuk itu:

#!/bin/bash
while true; do
    php /path/to/your/script.php & sleep 0.5s;
done

Tanda '&' akan memotong proses di latar belakang, sehingga waktunya harus akurat. Saya kira setelah beberapa waktu itu akan menjadi tidak sinkron dengan jam nyata, jadi Anda mungkin ingin menambahkan cap waktu untuk apa pun yang dilakukan skrip Anda atau menggunakan pendekatan dengan daemon yang menggunakan waktu sistem.

(Terima kasih atas masukan dalam komentar)

Saya sarankan menambahkan skrip itu dengan systemctl. Tutorial ini terlihat bagus untuk itu: Membuat file layanan systemd saya sendiri

noreabu
sumber
Hm, mereka ingin menjalankannya setiap 500 milidetik, tidak setiap 500 detik. Juga phppekerjaan itu harus dilatar belakangi, jika tidak waktu eksekusi ditambahkan ke sleepwaktu eksekusi
kos
Terima kasih, edit jawaban saya. di halaman manual saya dikatakan floating point baik-baik saja, tetapi disebutkan, bahwa versi lain hanya menerima nilai integer.
noreabu
4
Tetap saja phppekerjaan tersebut harus di-background ( php /path/to/your/script.php &). Jika phppekerjaan membutuhkan waktu misalnya 0,25 detik untuk dijalankan, sleepeksekusi akan ditunda 0,25 detik, dan skrip akan berjalan setiap 0,75 detik, bukan setiap 0,5 detik.
kos
0

Karena Anda terbiasa dengan PHP, Anda dapat membuat daemon / layanan PHP. Saya pernah membuat layanan PHP untuk diri saya sendiri karena saya harus menggunakan perpustakaan yang hanya tersedia dalam PHP. Ini berjalan tanpa masalah selama bertahun-tahun sekarang.

Berikut ini beberapa informasi tentang daemon PHP:

tak seorangpun
sumber