小编jjw*_*ign的帖子

为什么TRANSACTION/COMMIT使用PHP/MySQL(InnoDB)提高了性能?

我一直在导入大量CSV数据文件; 通常少于100,000条记录.我正在使用PHP和MySQL(InnoDB表).我需要使用PHP来转换某些字段并在MySQL之前进行一些文本处理INSERT(process_note_data()下面代码的一部分).MySQL LOAD DATA是不可行的,所以请不要建议.

我最近尝试使用START TRANSACTION和使用MySQL事务来提高此过程的速度COMMIT.性能提升令人惊讶.处理时间减少了20倍.因此,20分钟的处理只需要大约1分钟.

质询.

1.)有谁理解为什么有这样的性能提升(20分钟到1分钟)?

2.)我应该关注10万条记录的交易量有多大?

3.)我是否应该关注交易中的大量插入和/或更新?

/*
 * Customer Notes Data:
 * Rows are either a meeting, call or note!
 */
$row = 1;
$data = array();
$fields = array();
$line = '';

$db->query('SET autocommit=0;');
$db->query('START TRANSACTION;');

if (($handle = fopen("modules/".$currentModule."/Data/customernote.csv", "r")) !== FALSE) {
  while (($data = fgetcsv($handle, 4096, ',', '"')) !== FALSE && $row < 999000) {
    //Row 1 - CSV header row with field …
Run Code Online (Sandbox Code Playgroud)

php mysql csv innodb transactions

32
推荐指数
2
解决办法
3万
查看次数

如何使用MySQL Workbench对两个数据库进行Schema Diff?

有谁知道如何使用MySQL Workbench为两个数据库提取数据库Scheme Diff.v5.2声明它有这个功能,但我似乎无法找到它.我必须使用MySQL Workbench.

mysql database schema mysql-workbench

22
推荐指数
4
解决办法
3万
查看次数

TCPDF:如何将图像放入HTML块?

我已经和TCPDF合作了几个月了; 断断续续地.它对我的大多数HTML模板都运行得相当好,但是我总是遇到将图像放入PDF的问题.图像通常放在身体中,而不是头部.我的位置是左上角的固定位置,或者是相对于文档底部的位置.在任何一种情况下,我都有问题.当HTML中的文本发生变化时,我必须重新定位图像.多列表可能会使事情变得更加困难.注意:"class pdf扩展了TCPDF".

$this->pdf->AddPage();
$this->pdf->writeHTML($pdf_html);
$cur_page = $this->pdf->getPage();
$x_pos = $this->pdf->GetX();
$y_pos = $this->pdf->GetY();
// Place image relative to end of HTML
$this->pdf->SetXY($x_pos, $y_pos - 54);
$this->pdf->Image('myimage.png');
Run Code Online (Sandbox Code Playgroud)

有没有人知道将图像放入从HTML生成的PDF中的简单方法.我想将HTML分成两部分,但我不确定它是否也能正常工作.

php pdf-generation tcpdf

13
推荐指数
2
解决办法
4万
查看次数

我什么时候应该使用PHP Session vs Browser本地存储与JavaScript对象参数?

什么时候使用现代基于AJAX的应用程序存储数据的许多不同方式?我希望能为开发人员提供一些具体的指导方针.到目前为止,这就是我所看到的,而且它变得越来越混乱.

PHP服务器端会话: PHP会话数据可能是存储基于会话的信息的最早方式.我经常通过JavaScript/jQuery对象的各种AJAX调用传递参数 - 存储在PHP Session中.我还将数据对象(一些会话信息)作为响应/结果返回给JavaScript/jQuery方法.

基于浏览器的本地存储:这通常用于存储需要在前端保留的数据,但有时我不确定何时使用它.一个很好的用途是存储navigator.geolocation中的地理位置信息.我在这里存储了很多信息,但我不确定这是明智的.它似乎永远不会过期,但可以从Resources中删除.

带有config参数的JavaScript对象:我一直使用init方法构建JavaScipts对象,该方法设置'settings'参数.这非常有用,因为我通常是从PHP传入的数据构建的.使用jQuery Mobile,这些数据甚至可以在页面之间保持不变,并随着AJAX请求响应而变化.

那么,您对每种方法的使用有何指导意见?

javascript php session javascript-objects jquery-mobile

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

创建CSV文件时,如何处理字段中的\n和\ r \n字符?

我正在编写一个函数来处理CSV输出fputcsv().我已经解决了\r\n许多人曾经遇到的可怕问题fputcsv()(见代码).

现在我想弄清楚如何处理\r\n字段中包含的字符(不是行结束返回\r\n).是否应该在被传递之前以某种方式逃脱fputcsv()

该函数可以很好地处理大多数字符的转义.但是,当a \n插入字段时,MS Excel和Google Docs都会出现问题,\n并且CSV无法正确加载.

/*
* Revised Get CSV Line using PHP's fputcsv()
* 
* Used to correct an issue with fputcsv()
* http://stackoverflow.com/questions/4080456/fputcsv-and-newline-codes
* MS Excel needs the MS Windows newline format of \r\n
* 
*/

if (!function_exists('get_csv_line'))
{
    function get_csv_line($list,  $seperator = ",", $enclosure = '"', $newline = "\r\n")
    {
        $fp = fopen('php://temp', 'r+'); 

        fputcsv($fp, $list, $seperator, $enclosure ); …
Run Code Online (Sandbox Code Playgroud)

php csv codeigniter

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

htaccess 通过 IP 地址拒绝除美国以外的所有 IP 地址?

我有一个本地网站,我想加强对美国境内网站的访问;或者也许只在佛罗里达州。这是一个 Word Press 网站,由于一些弱代码而遭到黑客攻击。我见过两个 IP 地址列表来源,用于通过 IP 地址进行 .htaccess“允许拒绝”控制。

国家/大陆 IP:http : //www.countryipblocks.net/continents/

Wizcrafts 列表:http : //www.wizcrafts.net/htaccess-blocklists.html

阻止除美国流量之外的所有内容的最佳方法是什么?您将如何处理拒绝/允许?你会拒绝其他国家还是只允许美国?

感谢您的任何评论,杰夫

ip .htaccess ip-address

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

将是/否单选按钮存储到MySQL数据库中

我已经看到了一个Yes/No形式的单选按钮值,可以通过几种不同的方式存储/保存.我想知道哪种方式更好,为什么?这是针对PHP/MySQL应用程序的一个典型的是/否问题作为表单的一部分.

1.)将其存储为1,0或null.1为是,0为否,无回答为空.

2.)将其存储为是,否,为空.假设可以进行语言转换.

3.)使用1,2和null,以便更好地区分值.

谢谢,杰夫

编辑:我还必须提到,由于jQuery/JavaScript以及比较和$()绑定,大多数问题都已出现.

html php forms jquery codeigniter

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

CodeIgniter:所有$ this-> db-> query()方法调用的SQL审计?

我正在使用CodeIgniter 2+并希望审核所有$this->db->query($sql);电话.

我们所有的数据库调用都是通过query()方法调用的; 没有活动记录使用.我需要记录$ sql查询并将它们输入到自定义表中以进行审计记录.有没有人知道扩展核心系统数据库库审计查询的方法?

看起来这应该很容易,但我似乎无法找到一个简单的解决方案.CI论坛有几个关于旧版本的失败帖子.

php mysql audit codeigniter

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

Javascript 的 JSON.stringfy 和 PHP 的 json_encode 一样吗?

我正在尝试使用 JavaScript(CryptoJS 库)和 PHP(内置 HMAC 函数)对字符串化数据进行 HMAC SHA256 哈希。我担心 JavaScript JSON.stringify 与 PHP json_encode() 函数不一致/相同。有没有更好的方法来对数据(对象/数组)进行字符串化?

这是我的测试,它有效。但是,我担心代码可能遇到的西班牙语字符和其他编码/实体。

<h1>Testing HMAC Javascript to PHP Comparison</h1>

<br><br>

<div id="php_mac">
<?php
// Testing HMAC
$security_key = '0123456789';
$obj = array(
    'field1' => 1,
    'field2' => '2',
    'field3' => "'",
);

// Calculate HMAC SHA256
$str_data = json_encode($obj);
echo "PHP str_data: ".$str_data."<br>";
$hash = hash_hmac('sha256', $str_data, $security_key, true);
$hashInBase64 = base64_encode($hash);
echo "PHP hashInBase64: ".$hashInBase64;
?>
</div>

<br><br>

<div id="javascipt_hmac">

    <div id="javascript_str_data"></div>
    <div id="javascript_hashInBase64"></div>

<script>

var …
Run Code Online (Sandbox Code Playgroud)

javascript php json cryptojs

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

Python 库默认 NullHandler 在单元测试时导致错误

我正在尝试为我正在编写的 api 库设置默认记录器。Python 文档规定在库中设置 NullHandler,然后让使用该库的开发人员确定应如何处理日志记录。

注意 强烈建议您不要向库的记录器添加 NullHandler 以外的任何处理程序。这是因为处理程序的配置是使用您的库的应用程序开发人员的特权。应用程序开发人员知道他们的目标受众以及哪些处理程序最适合他们的应用程序:如果您在“幕后”添加处理程序,您很可能会干扰他们执行单元测试和交付符合他们要求的日志的能力。

https://docs.python.org/3/howto/logging.html#logging-advanced-tutorial

import logging
logging.getLogger('foo').addHandler(logging.NullHandler())
Run Code Online (Sandbox Code Playgroud)

所以,对于像 myapi.py 这样的模块,我可能有:

log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler)

class MyApi: ...
Run Code Online (Sandbox Code Playgroud)

然后在单元测试文件中,我将设置实际的日志处理程序。

import logging
log = logging.getLogger('myapi')
log.handlers = []
log.addHandler(logging.StreamHandler(sys.stdout))
log.setLevel(logging.DEBUG)

class MyApiTests(unittest.TestCase): ...
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是 NullHandler 在运行单元测试时会导致出现错误消息。

  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/__init__.py", line 1590, in callHandlers
  if record.levelno >= hdlr.level:
  AttributeError: type object 'NullHandler' has no attribute 'level'
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种方法来消除错误。首先,我尝试删除现有的处理程序;log.handlers = []。那似乎没有任何改变。我还尝试设置日志级别;log.setLevel(logging.DEBUG)。我仍然收到错误。

我肯定错过了什么。谁能解释如何删除 NullHandler 或防止错误消息?

python logging unit-testing python-3.x

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