0

所以我已经让我的 PHP 脚本绑定到套接字并将传入数据写入文本文件,因为新信息会顺流而下。这运作良好。我想做的是每次更新文本文件时运行另一个单独的 PHP 脚本。

我试图通过使用“包含”命令来实现这一点,但它不起作用。我已经通过使用该命令模拟一个非常简单的脚本来测试我的“包含”方法是否有效。也许我将代码行放在错误的位置?我在 do-while 循环中有它(参见下面的代码)。

也许需要重新启动或重置脚本/套接字才能进行更改?

任何帮助,将不胜感激。谢谢!

这是我的代码的要点:

[socket create, bind, and listen stuff goes here]

do {
$input = socket_read($spawn, 4096, 1) or die("Could not read input\n");
$trimmed = trim($input);


if ($trimmed != "") {
  echo date($dateformat) . ": Received input: $trimmed\n";
  if ($trimmed == "END") {
     socket_close($spawn);
     break;
  }
  else {
     // write content
     $fhp = fopen($textFile, 'w') or die("can't open file");
     fwrite($fhp, $trimmed);
     fclose($fhp);
     echo date($date) . ": Wrote: " . $trimmed ."\n";

    // run my other PHP script - the crux of my issue - this is not working
    include '/home/public_html/update.php';

     }
     echo date($dateformat) . ": updated \n";
    }
   }
} while (true);

socket_close($socket);
echo "Socket term\n";
4

1 回答 1

0

您问题中脚本中的逻辑是

  • 开始循环
  • 读取套接字
  • 打开文件句柄
  • 写入文件
  • 关闭文件
  • 要求'/home/public_html/update.php';
  • 回声
  • 关闭套接字
  • 结束循环

我不明白为什么脚本不能像你说的那样工作,因为文件在 include() 行之前被写入和关闭。以下代码行在 if/else 之外,可能会引起一些混乱,因为如果 IF 条件为 TRUE,那么它仍然会输出更新的内容。

 echo date($dateformat) . ": updated \n";

如果问题仍然存在,您能否粘贴 update.php 脚本,可能问题出在此处。


-- 编辑以包含 update.php 如果文件有内容,则在文件关闭后应用此代码。

if(filesize($textFile) != 0){
 include '/home/public_html/update.php';
}

上面的代码检查 $textFile 是否不等于 0,以便包含 update.php 文件。

于 2012-07-19T19:22:05.187 回答