小编bon*_*nez的帖子

Perl连接池

现在我们有一个大型的perl应用程序,它使用原始DBI连接到MySQL并执行SQL语句.它每次都创建一个连接并终止.开始接近mysql的连接限制(一次200)

看起来DBIx :: Connection支持应用程序层连接池.

有没有人有过经历DBIx::Connection?连接池是否还有其他注意事项?

我还看到mod_dbd哪个是Apache mod,它看起来像处理连接池. http://httpd.apache.org/docs/2.1/mod/mod_dbd.html

mysql apache perl mod-perl

11
推荐指数
2
解决办法
6643
查看次数

PHP的Heroku内存错误和从S3读取大文件

我正在使用适用于PHP的AWS 2.3.2 SDK尝试使用它们的流包装器从S3下载一个大文件(~4g),这应该允许我使用fopen/fwrite将文件写入磁盘而不是缓冲区记忆.

这是参考:

http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html#downloading-data

这是我的代码:

public function download()
    {

        $client = S3Client::factory(array(
                    'key'    => getenv('S3_KEY'),
                    'secret' => getenv('S3_SECRET')
                    ));

        $bucket = getenv('S3_BUCKET');
        $client->registerStreamWrapper();

        try {
            error_log("calling download");
            // Open a stream in read-only mode
            if ($stream = fopen('s3://'.$bucket.'/tmp/'.$this->getOwner()->filename, 'r')) {
                // While the stream is still open
                if (($fp = @fopen($this->getOwner()->path . '/' . $this->getOwner()->filename, 'w')) !== false){

                    while (!feof($stream)) {
                        // Read 1024 bytes from the stream
                        fwrite($fp, fread($stream, 1024));
                    }
                    fclose($fp);
                }
            // Be sure to close …
Run Code Online (Sandbox Code Playgroud)

php memory heroku amazon-s3 amazon-web-services

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

递归遍历对象

我在编写递归函数以遍历此层次结构时遇到麻烦

    object(stdClass)#290 (6) {
      ["category_id"]=>
      int(1)
      ["parent_id"]=>
      int(0)
      ["name"]=>
      string(4) "Root"
      ["position"]=>
      int(0)
      ["level"]=>
      int(0)
      ["children"]=>
      array(2) {
        [0]=>
        object(stdClass)#571 (7) {
          ["category_id"]=>
          int(2)
          ["parent_id"]=>
          int(1)
          ["name"]=>
          string(18) "Root MySite.com"
          ["is_active"]=>
          int(0)
          ["position"]=>
          int(0)
          ["level"]=>
          int(1)
          ["children"]=>
          array(11) {
            [0]=>
            object(stdClass)#570 (7) {
              ["category_id"]=>
              int(15)
              ["parent_id"]=>
              int(2)
              ["name"]=>
              string(9) "Widgets"
              ["is_active"]=>
              int(1)
              ["position"]=>
              int(68)
              ["level"]=>
              int(2)
              ["children"]=>
              array(19) {
                [0]=>
                object(stdClass)#566 (7) {
                  ["category_id"]=>
                  int(24)
                  ["parent_id"]=>
                  int(15)
                  ["name"]=>
                  string(16) "Blue widgets"
                  ["is_active"]=>
                  int(1)
                  ["position"]=>
                  int(68)
                  ["level"]=>
                  int(3)
                  ["children"]=>
                  array(0) { …
Run Code Online (Sandbox Code Playgroud)

php recursion

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

ElasticSearch RegExp过滤器正则表达式破折号

我在ElasticSearch v1.2.1中有一些文档,如:

{
  "tempSkipAfterSave": "false",
  "variation": null,
  "images": null,
  "name": "Dolce & Gabbana Short Sleeve Coat",
  "sku": "MD01575254-40-WHITE",
  "user_id": "123foo",
  "creation_date": null,
  "changed": 1
}
Run Code Online (Sandbox Code Playgroud)

其中sku可以是一个变化,例如:MD01575254-40-BlUE,MD01575254-38-WHITE

我可以使用弹性搜索查询来处理这个问题:

{
  "size": 1000,
  "from": 0,
  "filter": {
    "and": [
      {
        "regexp": {
          "sku": "md01575254.*"
        }
      },
      {
        "term": {
          "user_id": "123foo"
        }
      },
      {
        "missing": {
          "field": "project_id"
        }
      }
    ]
  },
  "query": {
    "match_all": {}
  }
}    
Run Code Online (Sandbox Code Playgroud)

我得到了sku的所有变化: MD01575254*

然而,破折号' - '真的搞砸了我

当我将正则表达式更改为:

"regexp": {
  "sku": "md01575254-40.*" …
Run Code Online (Sandbox Code Playgroud)

regex lucene elasticsearch

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

用于管理与远程API的连接的设计模式

我有一些PHP代码连接到购物车API(SOAP)端点.这不是针对一个中央服务器,而是针对任意数量的用户的特定端点URL.

现在我有几个不同的类,它们都创建自己与用户API的连接.

例如,

CartProduct.php - > updateProduct()(创建api连接)

CartCategory.php - > updateCategory()(创建api连接)

我正在考虑使用Singleton来共享远程连接,但在阅读了有关SO和一些博客的问题之后,显然每个人都讨厌Singleton.

就我而言,我认为连接池没有意义.我正在连接到远程用户的网站,所以我不只是想打开5个连接并且可能会减慢他们的网站速度.我想在这种情况下我真的想在这个应用程序调用之间共享一个连接.我认为在数据库的情况下,连接池是有意义的,但不适用于远程用户API.从理论上讲,我想我们应该考虑如果用户同时尝试运行updateProduct和updateCategory会发生什么......会破坏系统吗?

是否有一个设计模式在这里有意义打开一个连接,几个不同的类可以共享?

php oop api singleton design-patterns

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