我正在尝试循环一个3mb的Excel文档,以获取我将必须插入数据库的所有数据.我正在使用的工作表有6500行,但将来可能会有所不同.我注意到即使我使用推荐的内存保存技术,它仍然会绊倒
$reader = PHPExcel_IOFactory::createReaderForFile($file_path);
$reader->setReadDataOnly(true);
//$sheets = $this->getWorksheetNames($file['tmp_name'], 0);
$reader->setLoadSheetsOnly('spreadsheetname');
$chunkFilter = new IPO_Reader();
$reader->setReadFilter($chunkFilter);
$highestRow = 10000; //$this->objWorksheet->getHighestRow();
$chunkSize = 1;
$highestColumn = "Y";
for ($startRow = 2; $startRow <= $highestRow; $startRow += $chunkSize)
{
$chunkFilter->setRows($startRow, $chunkSize);
$objPHPExcel = $reader->load($file_path);
for($row = $startRow ; $row <= $startRow + $chunkSize; $row++)
{
$this->read_row = $objPHPExcel->getActiveSheet()->rangeToArray('A'.$row.':'.$highestColumn.$row, null, true, true, true);
$this->read_row = end($this->read_row);
foreach($this->read_row as $column => $value)
{
$db_column_name = $this->_getDbColumnMap($column);
if(!empty($db_column_name))
{
$this->new_data_row[$db_column_name] = $this->_getRowData($value, $column);
}
}
$this->read_row …
Run Code Online (Sandbox Code Playgroud) 我尝试在PhpUnit中的WebTestCase中发送原始数据,但它不起作用:
$jsonEvent = '{
"type": "invoice.payment_succeeded",
}';
$this->client->request(
'POST',
'/api/v1/stripe/webhook',
[],
[],
['CONTENT_TYPE' => 'application/json'],
$jsonEvent
);
Run Code Online (Sandbox Code Playgroud)
我尝试获取这样的数据:
$input = file_get_contents("php://input");
var_dump($input);
Run Code Online (Sandbox Code Playgroud)
但是$input
空的
不确定但是也许不可能在webtestcase中获得类似的内容输入?
提前致谢.
使用1and1 linux共享主机,
我安装了:
PHP版本7.0.27 PHP PhantomJS 2.1.1
PHP PhantomJS的所有值都为null
每当我提出请求时:
$client = Client::getInstance();
$client->getEngine()->setPath($main_path.'core/composer/bin/phantomjs');
$client->getEngine()->addOption('--ssl-protocol=any');
$client->getEngine()->addOption('--ignore-ssl-errors=true');
$client->getEngine()->addOption('--web-security=false');
$client->getEngine()->addOption('--debug=true');
$client->getEngine()->addOption('--local-to-remote-url-access=true');
$request = $client->getMessageFactory()->createRequest("http://luclaverdure.com");
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
var_dump($request);
var_dump($response);
if($response->getStatus() === 200) {
$resp = $response->getContent();
var_dump($resp);
}
Run Code Online (Sandbox Code Playgroud)
我有一堆空值,并且phantomJS无法处理URL ...
请求:
object(JonnyW\PhantomJs\Http\Request)#113 (12) {
["type":protected]=> NULL
["headers":protected]=> array(0) {}
["settings":protected]=>
array(1) {
["resourceTimeout"]=>
int(5000)
}
["cookies":protected]=>
array(2) {
["add"]=>
array(0) {
}
["delete"]=>
array(0) {
}
}
["data":protected]=>
array(0) {
}
["url":protected]=>
string(59) "http://luclaverdure.com"
["method":protected]=>
string(3) "GET"
["timeout":protected]=>
NULL
["delay":protected]=> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在公共 AWS NLB 上设置一个仅对特定范围的 IP 可见的 pod。为此,我想我可以使用 EKS 的安全组策略。
如果我来自 IP,123.45.67.81
我希望在 Traefik 日志中看到它作为我的 clientHost,然后在我的最终应用程序中看到相同的内容。相反,我看到 Traefik 的 IP 是我们的内部网络10.X.Y.Z
。我设法通过添加以下内容来设置 NLB 以将客户端 IP 传递给 traefik:
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*",
Run Code Online (Sandbox Code Playgroud)
和
spec: {
externalTrafficPolicy: Local
}
Run Code Online (Sandbox Code Playgroud)
但我仍然看不到最终 pod 上的 IP。我在 traefik 的配置中添加了以下内容:
- "--entryPoints.web.forwardedHeaders.trustedIPs=10.X.0.0/16"
- "--entryPoints.web.forwardedHeaders.insecure"
- "--entryPoints.web.proxyProtocol.trustedIPs=10.X.0.0/16"
- "--entryPoints.web.proxyProtocol.insecure"
- "--entryPoints.websecure.forwardedHeaders.trustedIPs=10.X.0.0/16"
- "--entryPoints.websecure.forwardedHeaders.insecure"
- "--entryPoints.websecure.proxyProtocol.trustedIPs=10.X.0.0/16"
- "--entryPoints.websecure.proxyProtocol.insecure"
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何区别。我知道要使其正常工作,我需要使代理协议正常工作,但我不确定为什么不能!
我写了一个插件来抓取最新的问题并在主页上显示它们.所有似乎都运行良好,但它只在我第一次重新启动服务器运行它时才起作用 - 之后它会"缓存"那个时间的问题,并且不会获取新的问题.
我一直在阅读它,我似乎应该编写一个补丁,以便在我的插件中添加额外的功能.真的吗?如果是这样,我应该添加什么after_save
行动?对于LatestPostsSetup模型也是如此 - 如果我更改了最大计数值和应该显示它的侧面的值,主页在我重新启动服务器之前不会反映它.
对不起,如果这个问题看起来相当微不足道,我是ruby的新手.请在下面找到视图助手代码:
module LatestPosts
class ViewHookListener < Redmine::Hook::ViewListener
require 'plugins/latest_posts/app/models/latest_posts_setup.rb'
setup = LatestPostsSetup.find_by_id(1)
if setup == nil
count = LatestPostsSetup::DEFAULT_COUNT
side = LatestPostsSetup::DEFAULT_SIDE
else
count = setup.max_count
side = setup.side
end
issues = Issue.find(:all, :limit => count, :order => "created_on DESC")
if side == 'left'
render_side = :view_welcome_index_left
else
render_side = :view_welcome_index_right
end
render_on render_side, :locals => {:issues => issues}, :partial => "latest_issues/issues"
end end
Run Code Online (Sandbox Code Playgroud)
编辑
我现在已经改变了视图助手来动态渲染html,而且我不必重新启动apache来显示新的问题,我不明白为什么会使用html模板呢?请找到以下代码:
# lib/latest_posts_hook_listener.rb
module LatestPosts
class ViewHookListener …
Run Code Online (Sandbox Code Playgroud) 您好,我需要帮助来模拟以下声明。
List<String> testString= jdbcTemplate.query(queryString, new Object[] { someStringParameter }, new testMapper());
Run Code Online (Sandbox Code Playgroud) 我需要浏览我的ini文件并检查该行是否以括号开头,以确定新配置是否已启动.有没有办法在bash中检查这个?我试过了
line="[test]"
if [[ "$line" =~ [.* ]]; then
echo "Got it!"
else
echo "Nothing found"
fi
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用.我认为括号需要以某种方式逃脱,但我找不到任何关于如何的信息.任何帮助都感激不尽.
我有一个使用DB适配器的模型,我想测试.DB适配器的构造函数处理所有数据库连接,所以我想在测试期间避免它,否则它会返回有关db pass/db username等未设置的错误.
我正在运行的代码如下所示,因为您看到我正在使用disableOriginalConstructor()
以防止调用构造函数.
问题是,我得到这个错误,当我尝试使用$mysql_stub
在will()
:
参数1传递给PHPUnit_Framework_MockObject_Builder_InvocationMocker ::会()必须实现接口PHPUnit_Framework_MockObject_Stub,Mock_Pages_MySQL_Page_46612429的情况下给出的,称为/Applications/MAMP/htdocs/lib/Pages/trunk/Tests/Unit/PageTest.php线185和定义
有人可以建议,正确的语法是什么?
class Page {
public function getByUrl($url)
{
$db_page = $this->getDAOInterface();
$db_page->getByUrl($url);
$this->assign($db_page);
return $this;
}
}
class PageTest extends PHPUnit_Framework_TestCase
{
public function testGetByUrl()
{
$test_url = "foo-bar";
$page_stub = $this->getMock(
'Pages_Model_Page',
array('getDAOInterface', 'assign')
);
$mysql_stub = $this->getMockBuilder('Pages_MySQL_Page')
->setMethods(array('getByUrl'))
->disableOriginalConstructor()
->getMock();
$mysql_stub->expects($this->once())
->method('getByUrl')
->with($this->equalTo($test_url));
$page_stub->expects($this->once())
->method('getDAOInterface')
->with()
->will($mysql_stub);
$page_stub->expects($this->once())
->method('assign')
->with($mysql_stub);
$page_stub->geByUrl($test_url);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试测试表单,但出现无法访问的字段异常。
我的控制器的代码:
class StudentController extends Controller
{
/**
* @Route("/student/new",name="create_new_student")
*/
public function newAction(Request $request){
$student = new Student();
$form = $this->createFormBuilder($student)->add('name',TextType::class)
->add('save',SubmitType::class,['label' => 'Create student'])->getForm();
$form->handleRequest($request);
if($form->isSubmitted()){
$student = $form->getData();
$name = $student->getName();
echo "Your name is ".$name;
die();
}
return $this->render(':Student:new.html.twig',['form' => $form->createView()]);
}
}
Run Code Online (Sandbox Code Playgroud)
我的学生控制器测试:
class StudentControllerTest extends WebTestCase
{
public function testNew(){
$client = static::createClient();
$crawler = $client->request('POST','/student/new');
$form = $crawler->selectButton('Create student')->form();
$form['name'] = 'Student1';
$crawler = $client->submit($form);
$this->assertGreaterThan(0,$crawler->filter('html:contains("Your name is Student1")')->count());
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用 phpunit …
我有一张表格
对DB我的立柱结构我我的设置TOTAL_PRICE来decimal(5,2)
的话,我有这个输入型
<div class="col-md-6" id="property_value">
<?php echo render_input('total_price','total_price',isset($project) ? $project->total_price : '','number'); ?>
</div>
Run Code Online (Sandbox Code Playgroud)
我的模特
public function add($data)
{
$_data['data'] = $data;
$_data['id'] = $id;
$_data = do_action('before_update_project', $_data);
$data = $_data['data'];
$this->db->where('id', $id);
$this->db->update('tblprojects', $data);
}
Run Code Online (Sandbox Code Playgroud)
然后我点击保存
问题是,为什么我发送到数据库的数据是0?即使我没有放任何价值?
php ×4
phpunit ×3
amazon-eks ×1
bash ×1
composer-php ×1
junit ×1
kubernetes ×1
memory ×1
mockito ×1
phantomjs ×1
phpexcel ×1
raw-data ×1
redmine ×1
sql ×1
symfony ×1
testing ×1
traefik ×1
unit-testing ×1