The scheduled tasks used by the company all look like this:
*/2 * * * * root cd /opt/xxxx/test_S1/html/xxxx/admin; php index.php task testOne >/dev/null 2>&1*/2 * * * * root cd /opt/xxxx/test_S1/html/xxxx/admin; php index.php task testTwo >/dev/null 2>&1
You can see that the output and standard error are redirected to an empty device. There is a certain reason for this. . I checked some information and describe it here:
1.Ssh login server<br>2. Create a new php file test.php, the code is as follows:
<?php sleep(50); echo "aaa\n"; file_put_contents("/tmp/test.txt",time());?>
3. Use the following command to execute the test.php program
$ php test.php &
to view the content of the /tmp/test.txt file as 1497613738
4. Then execute the following command again. After the command is executed, immediately use the exit command to log out
$ php test.php &
5 and then log in to the server via ssh and find that the content of the /tmp/test.txt file is still 1497613738. It means that when test.php was executed for the second time, the file_put_contents function was not executed or was not executed successfully.
6 Use strace to trace:
正常情况下的追踪: strace -p
Process 1475 attached restart_syscall(<...>) = 0write(1, "aaa\n", 4aaa ) = 4lstat("/tmp/test.txt", 0x7ffe792ebe90) = -1 ENOENT (No such file or directory) lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=65536, ...}) = 0open("/tmp/test.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0lseek(3, 0, SEEK_CUR) = 0write(3, "1497614186", 10) = 10close(3) = 0munmap(0x7f4840239000, 528384) = 0close(2) = 0close(1) = 0munmap(0x7f4847510000, 4096) = 0close(0) = 0munmap(0x7f4847511000, 4096) = 0sched_getaffinity(1475, 128, {ffffff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}) = 128sched_setaffinity(0, 128, {ffffff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}) = 0munmap(0x7f48404c8000, 2119936) = 0munmap(0x7f48406ce000, 2345056) = 0munmap(0x7f4840b39000, 2162536) = 0munmap(0x7f484090b000, 2282472) = 0munmap(0x7f4840d49000, 323584) = 0exit_group(0) = ? +++ exited with 0 +++[1]+ Done php test.php</...>
<br>
Trace after exiting and logging in again:
strace -p 3881
restart_syscall(<...>) = 0write(1, "aaa\n", 4) = -1 EIO (Input/output error) munmap(0x7f6b7fc04000, 528384) = 0close(2) = 0close(1) = 0munmap(0x7f6b86edb000, 4096) = 0close(0) = 0munmap(0x7f6b86edc000, 4096) = 0sched_getaffinity(3881, 128, {ffffff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}) = 128sched_setaffinity(0, 128, {ffffff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}) = 0munmap(0x7f6b7fe93000, 2119936) = 0munmap(0x7f6b80099000, 2345056) = 0munmap(0x7f6b80504000, 2162536) = 0munmap(0x7f6b802d6000, 2282472) = 0munmap(0x7f6b80714000, 323584) = 0exit_group(0) = ? +++ exited with 0 +++</...>
By comparison, you can see that there is an input/output error at the echo, and the file_put_contents function is not executed in the end.
7 Reason:
Why does an EIO error occur after logging out and then logging in again? This is related to Linux session processing. <br>When a user logs into a server via ssh, a session is started. After the session starts, standard input (stdin), standard output (stdout), and standard error (stderr) will be connected to a corresponding terminal (pty). <br>After the user logs in, any standard output will be reflected in the terminal. The file handle for standard output is 1. Therefore, echo("aaa\n") in php will cause the system call write(1, "aaa\n", 4) to be executed. aaa\n will be written in the terminal. <br>A session ends when the user logs out. At the end of the session, modify all file handles open to the terminal to be unreadable and unwritable; <br>If the user logs out and then executes write(1, "aaa\n", 4), an EIO error will be reported. Because the terminal handle is no longer writable. After an EIO error occurs, the process ends.
Solution<br>Method 1:<br>Use the redirection symbol & to redirect the standard output to the hole.
$ php test.php > /dev/null 2 >&1 & 这里的& 可以用也可以不用
Method 2: <br>Use nohup.
$ nohup php test.php &
Note:
If you are running a process and you feel that the process is still active when you log out of your account will not end, then you can use the nohup command.
This command can continue to run the corresponding process after you log out of your account/close the terminal. nohup means not to hang up (n ohang up).
Our company adopts the first method, regarding the description of /dev/null 2 >&1 &, See another article
The above is the detailed content of PHP examples of scheduled tasks. For more information, please follow other related articles on the PHP Chinese website!

TomodifydatainaPHPsession,startthesessionwithsession_start(),thenuse$_SESSIONtoset,modify,orremovevariables.1)Startthesession.2)Setormodifysessionvariablesusing$_SESSION.3)Removevariableswithunset().4)Clearallvariableswithsession_unset().5)Destroythe

Arrays can be stored in PHP sessions. 1. Start the session and use session_start(). 2. Create an array and store it in $_SESSION. 3. Retrieve the array through $_SESSION. 4. Optimize session data to improve performance.

PHP session garbage collection is triggered through a probability mechanism to clean up expired session data. 1) Set the trigger probability and session life cycle in the configuration file; 2) You can use cron tasks to optimize high-load applications; 3) You need to balance the garbage collection frequency and performance to avoid data loss.

Tracking user session activities in PHP is implemented through session management. 1) Use session_start() to start the session. 2) Store and access data through the $_SESSION array. 3) Call session_destroy() to end the session. Session tracking is used for user behavior analysis, security monitoring, and performance optimization.

Using databases to store PHP session data can improve performance and scalability. 1) Configure MySQL to store session data: Set up the session processor in php.ini or PHP code. 2) Implement custom session processor: define open, close, read, write and other functions to interact with the database. 3) Optimization and best practices: Use indexing, caching, data compression and distributed storage to improve performance.

PHPsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIDstoredinacookie.Here'showtomanagethemeffectively:1)Startasessionwithsession_start()andstoredatain$_SESSION.2)RegeneratethesessionIDafterloginwithsession_regenerate_id(true)topreventsessi

In PHP, iterating through session data can be achieved through the following steps: 1. Start the session using session_start(). 2. Iterate through foreach loop through all key-value pairs in the $_SESSION array. 3. When processing complex data structures, use is_array() or is_object() functions and use print_r() to output detailed information. 4. When optimizing traversal, paging can be used to avoid processing large amounts of data at one time. This will help you manage and use PHP session data more efficiently in your actual project.

The session realizes user authentication through the server-side state management mechanism. 1) Session creation and generation of unique IDs, 2) IDs are passed through cookies, 3) Server stores and accesses session data through IDs, 4) User authentication and status management are realized, improving application security and user experience.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

WebStorm Mac version
Useful JavaScript development tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
