首頁  >  問答  >  主體

怎麼實現php程式碼在win伺服器自動運行?

希望瀏覽器斷開連線後php程式碼能一直運作下去,找了很多方法都行不通

一.簡單直接不顧後果型

1

2

3

4

5

#6

7

8

9

10

   

<?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);

   

缺點: 啟動之後,無法控制,除非終止PHP 宿主. 不要採用這樣方法, 除非你是黑客.

二. 簡單可控型

1

2

3

4

5

6

##10

11

12

13

14

15

16

# #17

18

19

20

#   

config.php

 

# <?php

return 1;

?>

cron.php

 

o

#   

#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);

   

透過改變config.php 的 return 0 , 來實現停止程式. 一個可行的方法是config.php檔案與某個特殊表單互動, 透過HTML頁面設定一些變數來進行設定

缺點: 佔系統資源, 長時間運行,會有一些意想不到的隱憂。例如記憶體管理方面的問題.

三.簡單改進型別

#1

##2

##3

#4

5

6

7

8

9

   

##< ;?php

$time=15;

$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

/*

  function

*/

#sleep($time);

file_get_contents($url);

? >######   ############php腳本sleep 一段時間之後透過訪問自身的方式繼續執行. 就好像接力賽跑一樣..這樣就能保證每個PHP腳本執行時間不會太長. 也就不受time_out的限制了.######因為每一次循環php檔都是獨立執行,所以這種方法,避免了time_out的限制. 但是最好和上邊一樣加上控制碼. cofig.php , 以便能夠終止進程.###

上面的方法測試後無用,程式碼在運行幾分鐘後仍然會自動停止,個人希望其24小時不停運轉,請問還有其他方法嗎?或者有沒有一個網站能提供自動開啟網頁的服務,這樣我的程式碼就能隔一段時間啟動一次了

朱887 天前1619

全部回覆(4)我來回復

  • 大瓶可乐@php.cn

    大瓶可乐@php.cn2022-06-07 17:21:46

    你是想做爬蟲嗎?你可以做一個分頁跳執行完畢一個跳到下一個!

    回覆
    0
  • 朱

    也試過了,測試發現程式碼跳兩次自動就停止了,我是透過程式運行一次就往txt檔案寫個數,這種方法測試檔案裡只有兩個數,也就是只跳了兩次就停止了

    · 2022-06-07 20:06:23
  • 大瓶可乐@php.cn

    大瓶可乐@php.cn2022-06-07 17:15:10

    可以取試試windows 定時任務 

    回覆
    0
  • 大瓶可乐@php.cn

    大瓶可乐@php.cn2022-06-07 17:14:46

    php 不適合做這個事情

    回覆
    0
  • 取消回覆