Bagaimana untuk melaksanakan had masa dalam php

藏色散人
Lepaskan: 2023-03-13 15:10:01
asal
2201 orang telah melayarinya

Cara melaksanakan had masa dalam PHP: 1. Biarkan program dijalankan tanpa had melalui "set_time_limit(0)";

Bagaimana untuk melaksanakan had masa dalam php

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(&#39;memory_limit&#39;,&#39;512M&#39;); // 设置内存限制
$interval=60*30;// 每隔半小时运行
do{
  //ToDo 
  sleep($interval);// 等待5分钟
}
while(true);
Salin selepas log masuk

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;
?>
Salin selepas log masuk

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 &#39;config.php&#39;;
  if(!$run) die(&#39;process abort&#39;);
   
  //ToDo
  sleep($interval);// 等待5分钟
}
while(true);
Salin selepas log masuk

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[&#39;HTTP_HOST&#39;].$_SERVER[&#39;REQUEST_URI&#39;];
/*
  function
*/
sleep($time);
file_get_contents($url);
?>
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk
Contoh berikut menggunakan WGET untuk mengakses URL untuk melaksanakan skrip PHP setiap 10 minit. Pilihan -q menunjukkan mod senyap. "-O temp.txt" bermaksud output akan dihantar ke fail sementara.

*/5 * * * * /usr/bin/curl -o temp.txt http://www.sf.net/myscript.php
Salin selepas log masuk
5. Penjelasan terperinci tentang penggunaan fungsi ini_set

PHP ini_set digunakan untuk menetapkan nilai php.ini, yang berkuat kuasa apabila fungsi itu dilaksanakan. tetapan menjadi tidak sah. Anda boleh mengubah suai konfigurasi tanpa membuka fail php.ini, yang sangat mudah untuk ruang maya.
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.sf.net/myscript.php
Salin selepas log masuk

Format fungsi:

Tidak semua parameter boleh dikonfigurasikan, anda boleh melihat senarai dalam manual.

Tetapan biasa:
string ini_set(string $varname, string $newvalue)
Salin selepas log masuk

menory_limit: Tetapkan bilangan maksimum bait memori yang boleh digunakan oleh skrip, yang membantu skrip yang ditulis dengan buruk menggunakan memori yang tersedia pada Memori pelayan. Simbol @ bermaksud tiada ralat dikeluarkan.

@ ini_set(&#39;memory_limit&#39;, &#39;64M&#39;);
Salin selepas log masuk
display_errors: Tetapkan kategori mesej ralat.

@ini_set(&#39;display_errors&#39;, 1);
Salin selepas log masuk
session.auto_start: Sama ada untuk membuka pemprosesan sesi secara automatik Apabila ditetapkan kepada 1, anda tidak perlu membuka sesi secara manual dengan session_start() Anda juga boleh menggunakan sesi >

Jika parameter ialah 0, Jika sesi tidak dibuka secara manual, ralat akan dilaporkan.

@ini_set(&#39;session.auto_start&#39;, 0);
Salin selepas log masuk

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(&#39;session.cache_expire&#39;, 180);
Salin selepas log masuk

session.use_trans_sid: sama ada hendak menggunakan kod jelas untuk memaparkan SID (sesi; ID) dalam URL,
@ini_set(&#39;session.use_cookies&#39;, 1);
Salin selepas log masuk

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!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan