例如,
如果用户正在访问我的服务器上的图像文件,是否可以同时执行另一个PHP文件?
我想记录访问此图片文件的用户的IP,<ul class="nav nav-tabs">
<?php
$qu= "sql query for generating all tabs with some condition";
$rr=mysqli_query($conn,$qu);
$num = 0;
while($tab1 =mysqli_fetch_array($rr)){
?>
<li <?php if($num == 0){ ?> class="active" <?php }else{?> class="" <?php }?>><a data-toggle="tab" href="#<?php echo $tab1['field_name']; ?>"><?php echo $tab1['field_name'];?></a></li>
<?php
$num++;
} ?>
</ul>
<div class="tab-content">
<?php
$qu= "sql query for generating all tabs with some condition"; //again i run same query of above
$rr=mysqli_query($conn,$qu);
$num = 0;
while($tab1 =mysqli_fetch_array($rr)) {
?>
<div id="<?php echo $tab1['field_name']; ?>" <?php if($num == 0){ ?> class="tab-pane fade in active" <?php }else{?> class="tab-pane fade in" <?php }?> >
<table>
<thead>
<tr> all rows </tr>
</thead>
<?php
$qu1= "sql query for generating result";
$resout = mysqli_query($conn, $qu1);
if(mysqli_num_rows($resout) > 0){
while($row2 =mysqli_fetch_array($resout)){
?>
<tbody>
<tr> <td><?php echo $row2['field_name'];?></td> </tr>
</tbody>
<?php
}
}
else {
echo 'No result Found';
}
?>
</table>
</div>
<?php
$num++;
} ?> <!-- End of the While Loop -->
</div>
</div>
和HTTP_USER_AGENT
。难点在于如何在用户访问图像时执行(或可能说“触发”)PHP记录文件。我知道我可以首先将图像的内容读入PHP,然后将其作为图像输出并同时记录用户的信息,但是当图像文件的大小非常大时,这种方法可能会占用大量内存。 。因此,是否可以让用户直接访问图像文件,还可以同时触发另一个PHP文件?
答案 0 :(得分:0)
你有2个解决方案
答案 1 :(得分:0)
如果您只想记录$remote_addr
,以及$http_user_agent
和$http_accept_language
,您根本不需要使用PHP - 整个过程可以在combined
以及nginx中,使用比Apache更精细的自定义日志格式来完成。
此外,您还可以利用ngx_http_addition_module
的功能在每个其他请求之前或之后执行子请求,您可以在其中进行日志记录,并且不提供任何回报(例如不会实际损坏)图片)。
或者,您也可以将所有请求转到PHP,然后将X-Accel-Redirect
与请求的值一起使用,随后让nginx在不涉及您的php脚本的情况下提供图像,从而减轻您的需求记忆使用问题。
参考文档: