小编Kas*_*lek的帖子

PHPExcel内存问题

我正在尝试循环一个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)

php memory phpexcel

8
推荐指数
1
解决办法
9938
查看次数

WebTestCase Phpunit发送原始数据不起作用

我尝试在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中获得类似的内容输入?

提前致谢.

phpunit file-get-contents raw-data

8
推荐指数
1
解决办法
377
查看次数

在共享主机(1and1)上安装PhantomJS

使用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)

php shared-hosting phantomjs composer-php php-phantomjs

8
推荐指数
1
解决办法
473
查看次数

带有 pod 安全组的 EKS 上的 Traefik

我正在尝试在公共 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)

但这似乎没有任何区别。我知道要使其正常工作,我需要使代理协议正常工作,但我不确定为什么不能!

amazon-web-services kubernetes traefik amazon-eks

7
推荐指数
1
解决办法
311
查看次数

问题发生变化时,Redmine插件视图挂钩刷新

我写了一个插件来抓取最新的问题并在主页上显示它们.所有似乎都运行良好,但它只在我第一次重新启动服务器运行它时才起作用 - 之后它会"缓存"那个时间的问题,并且不会获取新的问题.

我一直在阅读它,我似乎应该编写一个补丁,以便在我的插件中添加额外的功能.真的吗?如果是这样,我应该添加什么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)

ruby-on-rails redmine redmine-plugins

6
推荐指数
1
解决办法
2285
查看次数

如何使用带有参数的 rowmapper 来模拟 jdbctemplate,仅使用mockito

您好,我需要帮助来模拟以下声明。

List<String> testString= jdbcTemplate.query(queryString, new Object[] { someStringParameter }, new testMapper());
Run Code Online (Sandbox Code Playgroud)

junit mockito

5
推荐指数
2
解决办法
1万
查看次数

如何检查字符串是否以bash中的方形开头

我需要浏览我的ini文件并检查该行是否以括号开头,以确定新配置是否已启动.有没有办法在bash中检查这个?我试过了

line="[test]"

if [[ "$line" =~ [.* ]]; then
    echo "Got it!"
else
    echo "Nothing found"
fi
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用.我认为括号需要以某种方式逃脱,但我找不到任何关于如何的信息.任何帮助都感激不尽.

bash

2
推荐指数
1
解决办法
2907
查看次数

disableOriginalConstructor()和will()冲突

我有一个使用DB适配器的模型,我想测试.DB适配器的构造函数处理所有数据库连接,所以我想在测试期间避免它,否则它会返回有关db pass/db username等未设置的错误.

我正在运行的代码如下所示,因为您看到我正在使用disableOriginalConstructor()以防止调用构造函数.

问题是,我得到这个错误,当我尝试使用$mysql_stubwill():

参数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)

php phpunit unit-testing

2
推荐指数
1
解决办法
1224
查看次数

使用 Phpunit 进行功能测试:InvalidArgumentException:无法访问字段

我正在尝试测试表单,但出现无法访问的字段异常。

我的控制器的代码:

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 …

testing phpunit symfony

1
推荐指数
1
解决办法
1577
查看次数

为什么我的值为0,即使我没有放任何值?

我有一张表格

对DB我的立柱结构我我的设置TOTAL_PRICEdecimal(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 sql

1
推荐指数
1
解决办法
70
查看次数