GNU/Linux >> Belajar Linux >  >> Linux

Meneruskan parameter $_GET ke tugas cron

Bukan jawaban langsung untuk pertanyaan Anda tetapi menurut saya solusi yang lebih baik:

Jika Anda tidak ingin siapa pun kecuali cron menjalankan skrip, letakkan saja di luar web-root. Dengan begitu, tidak ada akses sama sekali melalui server web.

Jika Anda juga perlu menjalankan perintah sebagai pengguna khusus, jangan gunakan GET tetapi minta login pengguna dan periksa sesi login (variabel sesi set tertentu...) dan sertakan skrip di halaman itu saja.

Skrip Anda yang dapat diakses publik akan terlihat seperti:

session_start();

if (isset($_SESSION['user']))
{
  include '/path/to/script/outside/of/web-root';
}
else
{
  die('No access.');
}

$_GET[] &$_POST[] array asosiatif hanya diinisialisasi ketika skrip Anda dipanggil melalui server web. Saat dipanggil melalui baris perintah, parameter diteruskan dalam $argv array, seperti C.

Berisi larik semua argumen yang diteruskan ke skrip saat dijalankan dari baris perintah.

Perintah Anda adalah:

* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234 

Anda kemudian akan menggunakan parse_str() untuk menyetel dan mengakses parameter:

<?php

var_dump($argv);

/*
array(4) {
  [0]=>
  string(27) "/path_to_script/cronjob.php"
  [1]=>
  string(13) "username=test"
  [2]=>
  string(13) "password=test"
  [3]=>
  string(9) "code=1234"
}
*/

parse_str($argv[3], $params);

echo $params['code']; // 1234

Linux
  1. [ASK] Pekerjaan cron wget menulis file ke direktori root

  2. Cron Job Untuk Memeriksa Apakah Script Php Berjalan, Jika Tidak Maka Jalankan?

  3. Cron Job Tidak Dijalankan?

  1. Pekerjaan Cron saya tidak berfungsi

  2. pekerjaan Opsi Perintah Di Linux

  3. Uji tugas cron mingguan

  1. Cara Membuat Script Perintah Linux

  2. Bisakah saya menjalankan tugas cron lebih sering dari setiap menit?

  3. Zona waktu apa yang digunakan tugas cron?