【发布时间】:2021-10-19 04:59:04
【问题描述】:
所以我有 GetMessages.php,这个脚本从数据库 (MongoDB) 中获取数据。然后它向 MyMessagesMDB.php 发送一个 cURL POST。这是代码:
<?php
$FirstName = '';
$LastName = '';
$Email = '';
$Subject = '';
$Message = '';
GetFromDB();
echo $FirstName." ".$LastName;
echo "<br>";
echo $Email;
echo "<br>";
echo $Subject;
echo "<br>";
echo $Message;
echo "<br>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://192.168.0.163/MyMessagesMDB.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"FirstName=$FirstName&LastName=$LastName&Email=$Email&Subject=$Subject&TextMessage=$Message");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close($ch);
function GetFromDB(){
$client = new MongoDB\Driver\Manager('mongodb+srv://####:####@####.tldyu.mongodb.net/Data');
$filter = [];
$options = [];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $client->executeQuery('ContactMessages.ContactForm', $query);
foreach($cursor as $document){
$document = json_decode(json_encode($document),true);
global $FirstName, $LastName, $Email, $Subject, $Message;
$FirstName = $document['FirstName'];
$LastName = $document['LastName'];
$Email = $document['Email'];
$Subject = $document['Subject'];
$Message = $document['Message'];
}
}
?>
MyMessagesMDB.php 是首先被调用的脚本。它调用 GetMessages.php,然后应该接收它发布的信息。代码如下:
<?php
$FirstLoop = true;
if($FirstLoop == true){
file_get_contents('http://192.168.0.102/test/GetMessages.php');
$FirstLoop = false;
}
$FirstName = $_POST["FirstName"] ?? "";
$LastName = $_POST["LastName"] ?? "";
$Email = $_POST["Email"] ?? "";
$Subject = $_POST["Subject"] ?? "";
$Message = $_POST["TextMessage"] ?? "";
echo $FirstName." ".$LastName;
echo "<br>";
echo $Email;
echo "<br>";
echo $Subject;
echo "<br>";
echo $Message;
echo "<br>";
?>
但这里开始我的问题。
如果我调用 MyMessagesMDB.php 我会收到错误:
PHP 警告:file_get_contents(http://192.168.0.102/test/GetMessages.php):打开流失败:HTTP 请求失败!。
如果我尝试手动加载页面,则不会出现错误,并且数据库中的数据会打印在屏幕上。
在 MyMessagesMDB.php 中,我这样评论以下行:
#file_get_contents('http://192.168.0.102/test/GetMessages.php');
我可以毫无问题地加载页面。
问题
如何从 MyMessagesMDB.php 调用 GetMessages.php 并从数据库中接收信息?
注意:我试过了
$curl_handle=curl_init();
curl_setopt($curl_handle,
CURLOPT_URL,'http://###.##.##.##/mp/get?
mpsrc=http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert
format=flv');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application
name');
$query = curl_exec($curl_handle);
curl_close($curl_handle);
【问题讨论】:
-
在您的问题中,您能否将脚本 A 和 B 重命名为它们的文件名,这有点难以跟踪。
-
是的,我的错。我改了!
-
我有点糊涂,所以GetMessages调用了MyMessagesMDB,然后又调用了GeMessages,这不是无限循环吗?你想要完成什么?我也许可以就如何更好地组织代码提供一些提示
-
所以 MyMessagesMDB.php 将是一个网页,将显示数据库中的内容,该文件将托管在我学校的服务器上。为了从数据库中获取数据,我调用 GetMessages.php,然后将内容发布到 MyMessagesMDB.php 页面。我无法从学校服务器直接连接到数据库,所以我需要 GetMessages.php 文件。它充当学校和数据库之间的中间人。
-
啊,是的,我想我现在明白了。因此,您希望 MyMessagesMDB 既是您在本地运行以开始从数据库获取内容的脚本,也是接收信息的脚本?当前在您的 GetMessages 脚本中,如果其中有超过 1 个文档,它只会获取最后一条消息,这是有意的吗?