Home >Backend Development >PHP Tutorial >Examples of using scheduled tasks to automatically execute PHP programs in Windows_PHP Tutorial
The so-called task plan is for the computer to automatically call the applications set by the user in advance, thereby simplifying the user's operations. Using the task scheduler of Windows 2000 (equivalent to the cron program under *NIX, which will not be described in detail here), we can schedule any script, program or document to run at the most appropriate time to meet our needs. The following takes Windows 2000 as an example.
Specifically, if we need to use the task scheduler to run automatically, we should perform the following steps:
Click the "Start" button, then select "Programs" → "Accessories" → "System Tools" → "Task Scheduler" (or "Settings" → "Control Panel" → "Task Scheduler") to start Windows 2000 task planning management program.
Double-click the "Add Task Plan" icon in the "Task Plan" window to start the system's "Task Plan Wizard", then click the "Next" button and select the application that needs to be run automatically in the given program list , and then click the "Next" button.
Set an appropriate task schedule name and select the time frequency to automatically perform this task (such as daily, weekly, monthly, one-time, every time you start the computer, every time you log in, etc.), then click "Next" "Button.
At this time, the system will ask the user to set the specific time for the program to run, such as what day, what time, what time period it can run, etc. We only need to set it according to our own needs.
Next, the system will ask the user to set an appropriate username and password (as shown in Figure 5) so that the system can run automatically in the future.
Finally, we only need to click the "Finish" button to add the corresponding task to the task scheduler of Windows
2000. After that, it will automatically "remember" the task once the system time and related conditions If it matches the plan set by the user, it will automatically call the application specified by the user, which is very convenient (every time you start Windows 2000, the task scheduler will automatically start and run in the background to ensure that the user's plan able to execute on time).
Now let’s test whether the task we just created is successful. Right-click the "php" program icon (as shown in Figure 6) and select "Run" in the pop-up menu. Under normal circumstances, the program icon can start normally as long as it is
activated and running. If the operation fails, you can check whether the user and password are set correctly, and confirm whether the "Task
Scheduler" service has been started. I turned it off in order to save system resources, which caused the operation to fail, which cost me a long time to find. In addition, you can also check the "System Log" to see what
caused the operation to fail.
1. Let PHP run regularly
Edit the following code and save it as test.php:
Now let’s see if the content of the d:php4test.txt file was successful. If the content is as shown below, congratulations on your success.
Edit the following code and save it as backup.php. If you want to compress it, you can copy a rar.exe:
PHP Shell script for the backup MySQL database.
Usage:
D:php4php.exe -q D:php4backup.php databasename
时间设置为每天运行一次,然后运行这个任务。
最后会在d:php4目录下生成一个以数据库名和当前时间组成的rar文件。
恭喜你!大功告成了!
当然备份方式有很多种,读者可按照自己喜欢的去做!
以上是原著.结合本人实贱,补充说明如下:
如果出现错误:
在试着设置任务帐户信息时出现错误
指定的错误是:
0x80070005:拒绝访问
您没有运行所请求的操作的权限
在上面'"4.接下来系统将会要求用户设置适当的用户名及密码,以便系统今后能自动加以运行".这里最好用"system"用户,密码可为空.
这个system的权限非常之高,比你的administrator还要高,所以你在运行命令的时候千万不要乱来,这个可是什么提示都没有就会无条件执行的,这个权限下你kill核心进程都行.
上面2、添加一个任务计划,在这一步输入命令:
正确形式应为
That is, the path must be enclosed in double quotes.
I have recently made several PHP game projects, including chess and card games and RPG games, all of which more or less require mechanisms for regularly updating information. For example, player timeout detection in chess and card games. It is used more in RPG games, such as monster refresh, automatic blood recovery, task expiration, ranking refresh, etc. Because PHP does not have memory-resident programs, there are some difficulties in processing.
I referred to the implementation methods of some peers. The usual approach is to write an auxiliary program in c++, python, java, etc. to update the database regularly according to the needs of the specific project. But
it is very troublesome to do so. First of all, these auxiliary programs require the intervention of programmers who know another language, which will inevitably increase development costs and risks. Second, joint debugging between programmers of different languages is very troublesome and the progress is very slow. Since the relationship between the auxiliary program and the front desk is very close, they basically need to be developed and debugged together.
First, define a table named task in the database, which has two fields exectime and
url. Among them, exectime is a unix type time, and url is a string type. Each piece of data represents a task, and the specific meaning is "this task is executed during exectime, and the execution address of
is url". The auxiliary program will monitor this table every second, compare the current time with the time of each task in the table, if the time is reached, request the url, then the task execution is completed, and the
task will be deleted. And so on.
I made this program into a windows service and archlinux Daemon, thus realizing the cross-platform of the entire project.
Supplementary content:
The task is started like this. We made a server switch interface similar to that of large-scale online games. After logging in to the game backend, go to the server control page and you can check the running status of the current server and turn the server on or off. Starting the server inserts related tasks into the task list, and closing the server clears the task list. It is artificial form.
Repeated opening of tasks, because these tasks are inserted into the task table by php, and each task in the task table is executed once and then deleted by the auxiliary program, so each task only Can be executed once. If there is a task that needs to be executed in a loop, then the only way is to re-insert itself into the task list in the PHP code that executes the task (that is, the URL of the task).
Task timeout. Task timeout is divided into two types. In the data table, there is a timeout between task executions. One is the timeout when requesting the task page. The first case does not happen because the helper program executes all tasks up to and including the current time each time. In the second case, the auxiliary program will automatically determine whether the access to this page is successful. If a server error is returned or the connection cannot be made, the task will be retained without deletion and will be tried again in the next cycle.