【发布时间】:2015-11-11 09:45:04
【问题描述】:
我有一个脚本,但我不知道它为什么以及如何工作 - 原因之一是我发现关于 file_get_contents 的信息相互矛盾。
我有三个(内部)网络服务器 - 都以相同的方式设置,运行相同的软件。 我需要计算每台服务器上一个特定文件夹中的文件数(以获取登录到某个应用程序的用户数)。
对于本地服务器,我的文件计数 PHP 脚本由一个简单的 include 调用,对于两个远程服务器,我使用 file_get_contents。
在这两种情况下,我都引用同一个 PHP 文件。这行得通 - 我为每台服务器上的文件夹获取了正确数量的文件。
有时您阅读file_get_contents 只返回文件内容但不执行文件。在我的情况下,文件被执行并且我得到了正确数量的文件。所以,我有点困惑,为什么我的脚本真的可以工作。
我的脚本保存在一台服务器上。我希望更加灵活,并且能够从每个服务器调用脚本。因此,我在网络文件夹上创建了一个新的虚拟目录并将脚本文件移到那里,虚拟文件夹在每台服务器上都有相同的设置。我不得不稍微更改我的脚本才能再次获得相同的结果。我现在有echo $num 而不是return $num。如果我使用return,我不会得到结果,如果我使用echo,则会给出正确的文件数。我更愿意通过return 接收结果 - 但我不知道为什么这在新环境中不再起作用。
显示文件数量的脚本:
function getUserNum($basis_url_server, $url_vaw_scripte, $script_number_users)
{
$serverName = strtoupper($_SERVER['SERVER_NAME']);
//local server
if(strpos(strtoupper($basis_url_server),$serverName) !== false)
{
$numUsers = (include($script_number_users));
}
//remote server
else
{
$path = $basis_url_server.$url_vaw_scripte.$script_number_users;
$numUsers = file_get_contents($path);
//include($path);
}
return $numUsers;
}
echo getUserNum($basis_url_server1, $url_vaw_scripte, $script_number_users)."($label_server1)";
echo getUserNum($basis_url_server2, $url_vaw_scripte, $script_number_users)."($label_server2)";
echo getUserNum($basis_url_server3, $url_vaw_scripte, $script_number_users)."($label_server3)";
文件计数脚本(上面称为$script_number_users)
<?php
// 'include' only contains $fadSessionRepository = "E:\Repository\Session"
include dirname(__DIR__).'/vaw_settings.php';
$fi = new FilesystemIterator($pfadSessionRepository, FilesystemIterator::SKIP_DOTS);
$number = (iterator_count($fi)-1)/2 ;
//return $number;
echo $number;
?>
【问题讨论】:
-
嗨,Elentriel,杰拉德 - 非常感谢您的回复。我现在明白这应该如何工作了。我简化了我的脚本,考虑到了 Geralds 的提示,尽管我仍然使用 file_get_contents 但我不再区分它是否是本地的。它对我有用,非常感谢,Rob
标签: php file-get-contents