Cara melaksanakan had masa dalam PHP: 1. Biarkan program dijalankan tanpa had melalui "set_time_limit(0)";
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3
Cara melaksanakan had masa dalam php?
Lima cara untuk melaksanakan tugas berjadual dalam PHP
Dalam beberapa hari lalu, saya perlu menggunakan PHP untuk menulis aplikasi pelayan yang kerap merangkak halaman web . Saya mencari penyelesaian di Internet dan menemui beberapa penyelesaian, yang diringkaskan seperti berikut.
Tugas berjalan berjadual ialah tugas yang agak penting untuk tapak web, seperti kerap menerbitkan dokumen, kerap membersihkan maklumat sampah, dll. Kebanyakan tapak web hari ini menggunakan bahasa dinamik PHP Dibangunkan, pelaksanaannya PHP menentukan bahawa ia tidak mempunyai konsep AppServer seperti Java dan .Net, dan protokol http ialah protokol tanpa kewarganegaraan PHP hanya boleh dicetuskan dan dipanggil oleh pengguna, ia akan keluar dari memori secara automatik. Tiada Residen dalam ingatan.
Jika anda perlu menggunakan PHP untuk melaksanakan tugas berjadual, anda boleh mendapatkan penyelesaian berikut:
1 jenis ringkas, langsung dan melulu
<?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 ini_set('memory_limit','512M'); // 设置内存限制 $interval=60*30;// 每隔半小时运行 do{ //ToDo sleep($interval);// 等待5分钟 } while(true);
Kelemahan: Selepas. permulaan, Ia adalah mustahil untuk dikawal melainkan anda menamatkan hos PHP Jangan gunakan kaedah ini melainkan anda seorang penggodam.
2. >
cron.php<?php return 1; ?>
Hentikan program dengan menukar pulangan 0 konfigurasi .php. A Cara yang boleh dilaksanakan ialah berinteraksi dengan fail config.php dan borang khas, dan menetapkan beberapa pembolehubah melalui halaman HTML untuk konfigurasi Kelemahan: Ia mengambil sumber sistem, berjalan untuk masa yang lama , dan boleh menyebabkan beberapa bahaya tersembunyi yang tidak dijangka. Contohnya, isu pengurusan memori.
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ $run = include 'config.php'; if(!$run) die('process abort'); //ToDo sleep($interval);// 等待5分钟 } while(true);
3. Versi mudah yang dipertingkatkan
Skrip php terus dilaksanakan dengan mengakses dirinya sendiri selepas satu tempoh masa. . Dengan cara ini Ia boleh memastikan bahawa masa pelaksanaan setiap skrip PHP tidak akan dihadkan oleh time_out Oleh kerana setiap kitaran fail php dilaksanakan secara bebas, kaedah ini mengelakkan pengehadan. time_out . Tetapi sebaiknya tambahkan kod kawalan .cofig.php seperti di atas, supaya proses itu boleh ditamatkan.<?php $time=15; $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; /* function */ sleep($time); file_get_contents($url); ?>
4 Tugas berjadual pelayan
Platform Unix
Jika anda menggunakan sistem Unix, anda perlu menambah baris kod khas pada permulaan skrip PHP anda untuk membolehkan ia dilaksanakan, supaya sistem mengetahui jenis atur cara yang akan digunakan untuk menjalankan skrip. Baris pertama kod yang ditambahkan untuk sistem Unix tidak akan menjejaskan perjalanan skrip di bawah Windows, jadi anda juga boleh menggunakan kaedah ini untuk menulis skrip merentas platform.
1. Gunakan PHP untuk melaksanakan skrip dalam Crontab
Sama seperti memanggil skrip shell biasa dalam Crontab (penggunaan Crontab khusus), gunakan program PHP untuk memanggil skrip PHP dan melaksanakannya setiap kali jam myscript.php adalah seperti berikut:
/usr/local/bin/php ialah laluan program PHP. 2. Gunakan URL untuk melaksanakan skrip dalam Crontab# crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php
Jika skrip PHP anda boleh dicetuskan oleh URL, anda boleh menggunakan lynx atau curl atau wget untuk mengkonfigurasi Crontab anda.
Contoh berikut menggunakan pelayar teks Lynx untuk mengakses URL untuk melaksanakan skrip PHP setiap jam. Pelayar teks Lynx menggunakan mod perbualan untuk membuka URL secara lalai. Walau bagaimanapun, seperti yang ditunjukkan di bawah, kami menggunakan pilihan -dump pada baris arahan lynx untuk menukar output URL kepada output standard.
Contoh berikut menggunakan CURL untuk mengakses URL untuk melaksanakan skrip PHP setiap 5 minit. Curl memaparkan output pada output standard secara lalai. Menggunakan pilihan "curl -o", anda juga boleh membuang output skrip ke fail sementara temp.txt.00 * * * * lynx -dump http://www.sf.net/myscript.php
*/5 * * * * /usr/bin/curl -o temp.txt http://www.sf.net/myscript.php
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.sf.net/myscript.php
Format fungsi:
Tidak semua parameter boleh dikonfigurasikan, anda boleh melihat senarai dalam manual. Tetapan biasa:string ini_set(string $varname, string $newvalue)
@ ini_set('memory_limit', '64M');
@ini_set('display_errors', 1);
Jika parameter ialah 0, Jika sesi tidak dibuka secara manual, ralat akan dilaporkan.
@ini_set('session.auto_start', 0);
session.cache_expire: Menentukan tarikh tamat tempoh (minit) halaman sesi dalam cache klien. Lalai ialah 180 minit. Jika session.cache_limiter=nocache ditetapkan, tetapan di sini adalah tidak sah.
session.use_cookies: sama ada hendak menggunakan kuki untuk menyimpan ID sesi pada klien@ini_set('session.cache_expire', 180);
@ini_set('session.use_cookies', 1);
Ia dilumpuhkan secara lalai kerana ia akan membawa risiko keselamatan kepada pengguna anda:
Pengguna boleh memberitahu orang lain URL yang mengandungi sid yang sah melalui e-mel/irc/QQ/MSN, dsb.
URL yang mengandungi sid yang sah boleh disimpan pada komputer awam.
Pengguna boleh menyimpan URL dengan SID tetap dalam sejarah kegemaran atau penyemakan imbas mereka. Pengurusan sesi berasaskan URL sentiasa membawa lebih banyak risiko daripada pengurusan sesi berasaskan kuki dan harus dilumpuhkan.
Tugas berjadual PHP adalah perkara yang sangat menarik di atas adalah beberapa penyelesaian yang disediakan dalam artikel ini. Anda juga boleh membangunkan penyelesaian anda sendiri melalui idea artikel ini. Semoga dapat membantu semua yang memerlukan.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan had masa dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!