Heim >Backend-Entwicklung >PHP-Tutorial >linux - crontab中执行的php文件中遇到重定向会如何?

linux - crontab中执行的php文件中遇到重定向会如何?

WBOY
WBOYOriginal
2016-06-06 20:20:221267Durchsuche

有index.php文件,其中包含代码:

<code>header("Location: /from_index.php"); # 重定向(from_index.php的文件位置在:/www/)
</code>

使用crontab -e加入定时任务:

<code>*/5 9-23 * * * sleep 50 && php /www/index.php # php脚本的绝对路径
</code>

请问这样的结构中,会执行from_index.php中的代码吗?

我了解到如果写成:

<code>*/5 9-23 * * * sleep 50 && curl -L -e '; auto' http://127.0.0.1/index.php # http访问</code>

是能够执行到from_index.php中的代码的。但是这样的写法是否没有使用php命令效率高?

回复内容:

有index.php文件,其中包含代码:

<code>header("Location: /from_index.php"); # 重定向(from_index.php的文件位置在:/www/)
</code>

使用crontab -e加入定时任务:

<code>*/5 9-23 * * * sleep 50 && php /www/index.php # php脚本的绝对路径
</code>

请问这样的结构中,会执行from_index.php中的代码吗?

我了解到如果写成:

<code>*/5 9-23 * * * sleep 50 && curl -L -e '; auto' http://127.0.0.1/index.php # http访问</code>

是能够执行到from_index.php中的代码的。但是这样的写法是否没有使用php命令效率高?

php的执行
1.cli方式,直接用php脚本执行

<code>php  index.php</code>

2.经过服务器请求cgi方式

<code>curl -L http://127.0.0.1/index.php
</code>

header函数跳转,是服务器响应给curl(相当于浏览器)做重定向,然后重新请求服务器
因此php /www/index.php,header函数是不会起作用的进行跳转到index.php脚本文件,因为没有经过服务器。

<code>//index.php

header("Location:demo.php");</code>
<code>//demo.php

echo "this is demo";</code>

请求结果图
linux - crontab中执行的php文件中遇到重定向会如何?

服务器接收到的请求图
linux - crontab中执行的php文件中遇到重定向会如何?

如果使用curl的话你需要打开它的重定向开关

curl 不可以使用 header

直接再在代码里面用 system 调用php命令执行那个php文件 不可以这样?

第一个问题,不会,
第二个,不会有直接执行cli的性能高

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn