- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 php 脚本,出于某种原因,它在 mysqli 执行后跳过了几个打印语句,但在循环后打印。有任何想法吗?我将脚本移至另一台服务器。 DB(仍然)位于阿肯色州的小石城。脚本服务器位于阿肯色州的小石城,现在位于宾夕法尼亚州。 ping 正常。我看到了这个:
PING littlerock db (ip...) 56(84) bytes of data.
64 bytes from littlerock (ip...): icmp_seq=1 ttl=56 time=36.5 ms
它一直在运行,几分钟后我按 ctrl-c 退出了它。
当我在旧服务器上运行脚本时,需要 5 分钟。在新服务器上,这需要一个小时,并且在此期间缺少最后几条打印语句。 (参见//缺失)
我听说过绑定(bind)错误然后脚本在绑定(bind)后停止,但在这种情况下,它会在 while 循环后继续。但我没有更改查询或绑定(bind),所以应该没问题。我不确定如何调试它或在线搜索什么。我尝试逐渐注释掉和取消注释,发现在 while 循环中执行 stmt4 后,脚本变慢了。
我做到了
php -i | grep max_execution_time
看看
max_execution_time => 0 => 0
我认为这意味着没有最大值,所以它不应该超时。
我做了一个 strace php script.php 并看到了这样的事情:
write(9, "\17\0\0\0\27\1\0\0\0\0\1\0\0\0\0\0\2AR", 19) = 19
read(9, "\1\0\0\1\0017\0\0\2\3def\7netcool\7domains\7do"..., 16384) = 93
poll([{fd=6, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
poll([{fd=6, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(6, "\210\0\0\0\27\1\0\0\0\0\1\0\0\0\4\20\0\0\f10.66.46.141\17"..., 140) = 140
read(6, "\7\0\0\1\0\0\0\2\0\4\0", 16384) = 11
poll([{fd=8, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
poll([{fd=8, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(8, "\32\0\0\0\27\1\0\0\0\0\1\0\0\0\0\0\6Adtran\6TA5000", 30) = 30
read(8, "\1\0\0\1\3M\0\0\2\3def\7netcool\22vendor_mod"..., 16384) = 286
poll([{fd=9, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(9, "\17\0\0\0\27\1\0\0\0\0\1\0\0\0\0\0\2AR", 19) = 19
然后按 ctrl-c/z 退出。
<?php
print "zero \n";
error_reporting(E_ALL ); //& ~E_NOTICE | ~E_WARNING
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR ."logGen/loggen.class.php");
$err = new logGen('e', '/opt/na/NAC_Dslam/junk/logexample.log', TRUE);
$err->logThis("Running script");
// Date information
date_default_timezone_set('America/Chicago');//date_default_timezone_set
$last_week = strtotime("last week");
$last_week = Date('Y-m-d H:i:s', $last_week);
print "one \n";
// Oracle Connection details
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = <host>)(PORT = <port>)))(CONNECT_DATA=(SID=<db>)))";
$conn = oci_connect("<u>", "<p>", $db);
$query = "SELECT * FROM table1.view1 WHERE Vendor IN ('Ad','Cal') AND IP_ADDRESS NOT IN('RQ...', '0.0.0.0')";
$ora_stmt = oci_parse($conn, $query);
oci_execute($ora_stmt);
print "one b \n"; //i see this
//depo NAC Connection Details
$mysqli0 = new mysqli('<host>', '<u>', '<p>', "db1");
print "two \n"; //see this
// db connection details
$mysqli3 = new mysqli('<host>', '<db>', '<u>', '<p>');
// Only insert new records, any records that have just been modified should be updated instead. This is blocked via the
// node's IP as it is a unique key in the Netcool sis_elements table.
$stmt6 = $mysqli0->prepare("INSERT INTO mytable1(node_ipv4, nodealias, fqdn, region, State, class, vendor, model, head_node_monitor_pt, domain, date_updated, date_created)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())
ON DUPLICATE KEY UPDATE node_ipv4=?, nodealias=?, fqdn=?, region=?, State=?, class=?, vendor=?, model=?, head_node_monitor_pt=?, domain=?");
print "two b\n"; //see this
$stmt6->bind_param('ssssssssssssssssssss', $db_ipv4, $db_nodealias, $db_fqdn, $db_region, $db_state, $db_class, $db_vendor, $db_model, $db_head_node,$db_domain,
$db_ipv4, $db_nodealias, $db_fqdn, $db_region, $db_state, $db_class, $db_vendor, $db_model, $db_head_node, $db_domain);
// db connection details
$mysqli4 = new mysqli('<db>', '<table>', '<u>', '<p>');
print "three \n"; //see this
$stmt4 = $mysqli4->prepare("SELECT vendor, model, class
FROM vendor_model_class
WHERE source_system = 'DMV'
AND vendor = ?
AND model = ?");
print "three b\n"; //see this
$stmt4->bind_param("ss", $db_vendor, $db_model);
$stmt4->bind_result($set_vendor, $set_model, $set_class);
print "three c\n";
// dbconnection details
$mysqli5 = new mysqli('<host>', '<db>', '<u>', '<p>');
$stmt5 = $mysqli5->prepare("SELECT domain
FROM domains
WHERE state = ?");
print "four \n"; //see this
$stmt5->bind_param("s", $db_state);
$stmt5->bind_result($db_domain);
print "five \n"; //see this
$i = 0;
// Loop through the results
while($row = oci_fetch_array($ora_stmt, OCI_ASSOC+OCI_RETURN_NULLS)) {
$db_state = trim($row['STATE']);
$db_nodealias = trim($row['DSLAM']);
$db_vendor = trim($row['VENDOR']);
$db_model = trim($row['MODEL']);
$db_region = trim($row['STATE']);
$db_state = trim($row['STATE']);
$db_nodealias = trim($row['DSLAM']);
$db_ipv4 = trim($row['IP_ADDRESS']);
$db_head_node = trim($row['HEAD_NODE_MONITOR_PT']);
$db_monitor_cat = trim($row['MONITORING_CATEGORY']);
$stmt4->execute(); //it's slow after this event if I comment the rest of while loop out
if($i % 10 == 0)
print "five b " . $i++. "\n"; //I see five b 0 and that's it
while($stmt4->fetch()) {}
$db_class = $set_class;
$stmt5->execute();
if($i % 10 == 0)
print "six " . $i++. "\n"; //missing
while($stmt5->fetch()) { }
$stmt6->execute();
if($i % 10 == 0)
print "seven " . $i++. "\n"; //missing
}
print "eight \n"; //I see this
$mysqli4->close();
$mysqli5->close();
$mysqli0->close();
?>
最佳答案
查看下循环:
while($row = oci_fetch_array($ora_stmt, OCI_ASSOC+OCI_RETURN_NULLS))
当循环开始时,$i 为 0,因此您可以看到文本“five b”...
然后由于表达式 $i++,$i 将为 1。因此,if 语句的任何其他条件都不正确。
--------------------你想要的有效解决方案------------------------ ---
// Loop through the results
while($row = oci_fetch_array($ora_stmt, OCI_ASSOC+OCI_RETURN_NULLS)) {
$db_state = trim($row['STATE']);
$db_nodealias = trim($row['DSLAM']);
$db_vendor = trim($row['VENDOR']);
$db_model = trim($row['MODEL']);
$db_region = trim($row['STATE']);
$db_state = trim($row['STATE']);
$db_nodealias = trim($row['DSLAM']);
$db_ipv4 = trim($row['IP_ADDRESS']);
$db_head_node = trim($row['HEAD_NODE_MONITOR_PT']);
$db_monitor_cat = trim($row['MONITORING_CATEGORY']);
$stmt4->execute(); //it's slow after this event if I comment the rest of while loop out
if($i % 10 == 0)
print "five b " . $i. "\n";
while($stmt4->fetch()) {}
$db_class = $set_class;
$stmt5->execute();
if($i % 10 == 0)
print "six " . $i. "\n";
while($stmt5->fetch()) { }
$stmt6->execute();
if($i % 10 == 0)
print "seven " . $i. "\n";
$i++;
}
关于PHP在mysqli执行后跳过while循环中的打印语句,但在循环后显示打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52425897/
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!