我们如何使用linux bash运行php脚本?
php文件test.php
test.php包含.
<?php echo "hello\n" ?>
Run Code Online (Sandbox Code Playgroud) 我有一个复杂的嵌套对象层次结构,所有子对象(存储在父类中的对象数组)包含一个链接回其父级的属性:相当简单和直接,没有实际问题.如果我对层次结构中的任何对象执行var_dump,我将在转储中获得递归引用,正如我所期望的那样.
FIRSTGEN
_children array of objects of type SECONDGEN
SECONDGEN #1
_parent object of type FIRSTGEN
_children array of objects of type THIRDGEN
THIRDGEN #1
_parent object of type SECONDGEN
THIRDGEN #2
_parent object of type SECONDGEN
SECONDGEN #2
_parent object of type FIRSTGEN
_children array of objects of type THIRDGEN
THIRDGEN #3
_parent object of type SECONDGEN
Run Code Online (Sandbox Code Playgroud)
我最近在该层次结构中添加了一些新元素,但它们并没有遵循相同的模式.它们存储在顶级父级的对象数组中,但包含一个属性,将它们链接回来,而不是它们的父级,而是一个兄弟级.当我现在执行var_dump时,我得到一个"致命错误:嵌套级别太深 - 递归依赖?".
FIRSTGEN
_children_1 array of objects of type SECONDGEN_1
SECONDGEN_1 #1
_parent object of type FIRSTGEN
_children array of objects …Run Code Online (Sandbox Code Playgroud) 我有以下XML:
<?xml version="1.0" encoding="UTF-8"?>
<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd">
<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.1">
<office:meta>
<dc:creator>Mark Baker</dc:creator>
<dc:date>2010-09-01T22:49:33Z</dc:date>
<meta:creation-date>2010-09-01T22:48:39Z</meta:creation-date>
<meta:editing-cycles>4</meta:editing-cycles>
<meta:editing-duration>PT00H04M20S</meta:editing-duration>
<meta:generator>OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399</meta:generator>
</office:meta>
</office:document-meta>
</gnm:Workbook>
Run Code Online (Sandbox Code Playgroud)
我正在尝试阅读办公室:document-meta节点,以提取它下面的各种元素(dc:creator,meta:creation-date等)
以下代码:
$xml = simplexml_load_string($gFileData);
$namespacesMeta = $xml->getNamespaces(true);
$officeXML = $xml->children($namespacesMeta['office']);
var_dump($officeXML);
echo '<hr />';
Run Code Online (Sandbox Code Playgroud)
给我:
object(SimpleXMLElement)[91]
public 'document-meta' =>
object(SimpleXMLElement)[93]
public '@attributes' =>
array
'version' => string '1.1' (length=3)
public 'meta' =>
object(SimpleXMLElement)[94]
Run Code Online (Sandbox Code Playgroud)
但如果我尝试使用以下方法读取document-meta元素:
$xml = simplexml_load_string($gFileData);
$namespacesMeta = $xml->getNamespaces(true);
$officeXML = $xml->children($namespacesMeta['office']);
$docMeta = $officeXML->document-meta;
var_dump($docMeta);
echo '<hr />';
Run Code Online (Sandbox Code Playgroud)
我明白了
Notice: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Gatling中的一系列性能测试模块化.
有几个测试通过页面执行相同的初始路径,所以我认为我可以将它们分解为一系列场景,每个场景都是在其自己的文件中定义的一系列共享操作,然后是最终的模拟定义一个接一个地执行指定的方案.
然后我需要的是我的模拟按顺序运行这些场景; 但我只能找到如何同时运行它们,或者每个运行它们之间的指定延迟.是否有任何模拟设置选项可以一个接一个地运行已定义的方案而不指定任意延迟?
编辑
目前,我有以下文件集:
homepageHeaders.scala
package advanced
object homepageHeaders {
val homepage_headers_1 = Map(
"Accept" -> """text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""",
"If-Modified-Since" -> """Wed, 20 Mar 2013 15:36:31 +0000""",
"If-None-Match" -> """"1363793791""""
)
}
Run Code Online (Sandbox Code Playgroud)
homepageChain.scala
package advanced
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import com.excilys.ebi.gatling.jdbc.Predef._
import akka.util.duration._
import homepageHeaders._
object homepageChain {
val homepageChain =
//Homepage
exec(http("homepage")
.get("/")
.headers(homepageHeaders.homepage_headers_1)
)
}
Run Code Online (Sandbox Code Playgroud)
pageHeaders.scala
package advanced
object pageHeaders {
val page_headers_1 = Map(
"Accept" -> """text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"""
)
}
Run Code Online (Sandbox Code Playgroud)
pageChain.scala
package advanced
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import …Run Code Online (Sandbox Code Playgroud) 我已经构建了一个vagrant/virtualbox Web服务器作为开发沙箱,并在VM中为ssl配置了apache(在默认端口443上,带有自签名证书).我使用curl测试了VM本身的页面
curl -v -k https://mysite.mydomain.com/testSearch/results?postcode=WN8+0BA
Run Code Online (Sandbox Code Playgroud)
它看起来很开心,所以我很满意apache已经正确配置并在VM中工作.
但是,当我尝试通过https从主机的浏览器访问VM时,我无法这样做.
我已经添加
config.vm.forward_port "https", 443, 8443
Run Code Online (Sandbox Code Playgroud)
到我的vagrantfile,但试图访问该网址
https://mysite.mydomain.com:8443/testSearch/results?postcode=WN8+0BA
Run Code Online (Sandbox Code Playgroud)
根本无法显示我尝试过几种不同浏览器的页面:IE给出了一个毫无意义的"Internet Explorer无法显示网页"; Chrome给出了
SSL connection error
Unable to make a secure connection to the server. This may be a problem with the server or it may be requiring a client authentication certificate that you don't have.
Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.
Run Code Online (Sandbox Code Playgroud)
Firefox给了我
An error occurred during a connection to mysite.mydomain.com:8443.
SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)
Run Code Online (Sandbox Code Playgroud)
但即使是Firebug …
我有一个PHP库,它使用了许多带有\P多字节字符串表达式的正则表达式,例如
((((?:\P{M}\p{M}*)+?)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d+)
Run Code Online (Sandbox Code Playgroud)
虽然这适用于大多数版本,但我有一些regexp返回错误的报告.
根据操作平台,PCRE的错误消息是:
编译失败:PCRE在偏移量n处不支持\ L,\ l,\ N,\ P,\ p,\ U,\ u或\ X
要么
编译失败:尚未在偏移量n处编译对\ P,\ p和\ X的支持
我知道我可以在我的代码的开头测试一个正则表达式,它使用\P并捕获返回的错误,然后使用该响应设置兼容性标志并提供降级(非UTF-8)正则表达式而不\P在主要内部我的代码的主体基于该兼容性标志.
我想知道是否有任何识别是否PCRE已经没有内置简单的方式--enable-unicode-properties或--enable-utf8配置交换机.PHP提供对PCRE_VERSION常量的访问,但这无助于确定是否\P启用了支持.
假设你有一个大小为n的数组A [1..n],它包含集合{1..n}中的元素.但是,缺少两个元素(并且可能重复了两个数组元素).找到缺少的元素.
例如,如果n = 5,A可以是A [5] = {1,2,1,3,2}; 所以缺少的元素是{4,5}
我使用的方法是:
int flag[n] = {0};
int i;
for(i = 0; i < n; i++) {
flag[A[i]-1] = 1;
}
for(i = 0; i < n; i++) {
if(!flag[i]) {
printf("missing: %d", (i+1));
}
Run Code Online (Sandbox Code Playgroud)
空间复杂性来自O(n).我觉得这是一个非常儿童和低效的代码.那么请你提供一个更好的空间和时间复杂度的更好的算法.
我正在尝试更改整列的数据类型(例如:我需要将"M"列更改为常规格式).它2.00在数量字段中显示,我需要将这整列更改为一般格式即.显示为"2".但它没有改变数据类型.
这是代码:
$objPHPExcel->getActiveSheet()
->setCellValue(
$aCells[$eExcelColumn] . $eExcelRow,
$sCellData ,
PHPExcel_Cell_DataType::TYPE_NUMERIC
);
$objPHPExcel->getActiveSheet()->getStyle('M1:M97')
->getNumberFormat()
->setFormatCode('0');
Run Code Online (Sandbox Code Playgroud)
如何将整列"M"作为一般格式
Amazon Cloudwatch提供了一些非常有用的指标,用于监控我的EC2,负载均衡器,弹性缓冲和RDS数据库等,并允许我为一系列标准设置警报; 但有没有办法配置它来监控我的S3?或者是否有任何其他监控工具(除了简单地启用日志记录),这将有助于我监控我的S3资源的POST/GET请求和数据量的数量?并为活动阈值或增加的数据存储提供警报?
我刚刚对数组运行了一些简单的调试,并注意到当我执行数组的var_dump()时,输出会标记数组中由另一个变量引用的任何元素.作为一个简单的实验,我运行了以下代码:
$array = range(1,4);
var_dump($array);
echo '<br />';
foreach($array as &$value) {
}
var_dump($array);
echo '<br />';
$value2 = &$array[1];
var_dump($array);
echo '<br />';
Run Code Online (Sandbox Code Playgroud)
它给出了以下输出:
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) }
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> ?(4) }
array(4) { [0]=> int(1) [1]=> ?(2) [2]=> int(3) [3]=> ?(4) }
Run Code Online (Sandbox Code Playgroud)
注意?元素3旁边的符号和随后的元素1.还请注意,这些条目不显示条目的数据类型.
经过一些实验,如果我使用var_dump标量类型,或者使用对象或资源,我都不会看到这个.如果数组包含字符串数据,则符号为&(并且它仍然显示数据类型),同样具有float,boolean和object条目.
这是针对PHP 5.2.8运行的
第一个问题:这种行为是什么时候开始的,或者是我之前没有注意到的事情?
第二个问题:如果引用元素可以通过var_dump()以这种方式标记,那么核心PHP中是否有任何函数可以识别数组元素是否被另一个变量引用; 或者将从_zval_struct返回refcount或ref标志?