小编T. *_*nes的帖子

为什么这个正则表达式需要这么长时间才能找到某些文件中的电子邮件地址?

我有一个寻找电子邮件地址的正则表达式(这是从我找不到的另一个SO帖子中获取的,并且已经在各种电子邮件配置上进行了测试...更改这不是我的问题...但是要理解是否这是根本原因):

/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i
Run Code Online (Sandbox Code Playgroud)

我在PHP中使用preg_match_all().

这适用于99.99%的文件我正在查看并需要大约5毫秒,但有时需要几分钟.这些文件大于300k左右的平均网页,但更大的文件通常处理得很好.我能在文件内容中找到的唯一突出的是数千个连续的"随机"字母数字字符串,如下所示:

wEPDwUKMTk0ODI3Nzk5MQ9kFgICAw9kFgYCAQ8WAh4H...
Run Code Online (Sandbox Code Playgroud)

这是导致问题的两个页面.查看源以查看长字符串.

对这是什么造成的任何想法?

- 最终解决方案 -

我测试了答案中建议的各种正则表达式.@FailedDev的回答有助于将处理时间从几分钟缩短到几秒钟.@hakre的答案解决了问题并将处理时间缩短到几百毫秒.以下是我使用的最终正则表达式.这是@hakre的第二个建议.

/[a-z0-9_\-\+]{1,256}+@[a-z0-9\-]{1,256}+\.([a-z]{2,3})(?:\.[a-z]{2})?/i
Run Code Online (Sandbox Code Playgroud)

php regex web-scraping

7
推荐指数
2
解决办法
407
查看次数

使用MySQL进行分组时返回哪一行的字段?

我有一个领域的MySQL表id和string. ids是独一无二的. strings是varchars并且是非唯一的.

我执行以下查询:

SELECT id, string, COUNT( * ) AS frequency
FROM table
GROUP BY string
ORDER BY frequency DESC, id ASC
Run Code Online (Sandbox Code Playgroud)

问题

假设该表包含三个具有相同string值的行,以及ids 1,2和3.

  1. 哪个id会被退回(1,2或3)?
  2. id这个查询是哪个ORDER BY(与返回的相同?...请参阅问题1)?
  3. 你能控制哪些id退货/用于订购?例如.返回GROUP中的最大值id或第id一个.

我最终要做的是获得相同字符串的频率出现,按该频率排序,从最高到最低,以及频率绑定,按照返回/排序的组中id的最小值id排序.我使情况更通用,以弄清楚MySQL如何处理这种情况.

mysql group-by sql-order-by

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

AWS Athena(Presto)DISTINCT SQL查询中的结果是否重复?

我在S3上有一堆文件,只包含MD5,每行一个.我创建了一个AWS Athena表来对MD5运行重复数据删除查询.在这些文件和表格中总共有数亿个MD5.

雅典娜表创建查询:

CREATE EXTERNAL TABLE IF NOT EXISTS database.md5s (
  `md5` string 
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = ',',
  'field.delim' = ','
) LOCATION 's3://bucket/folder/';
Run Code Online (Sandbox Code Playgroud)

以下是我尝试过的所有"重复数据删除"查询(这些查询应该都是相同的):

SELECT DISTINCT md5
FROM md5s;`

SELECT md5
FROM md5s
GROUP BY md5;

SELECT md5
FROM md5s
GROUP BY DISTINCT md5;

SELECT DISTINCT md5
FROM md5s
GROUP BY DISTINCT md5;
Run Code Online (Sandbox Code Playgroud)

来自Athena的所有结果输出.csvs仍然重复MD5.是什么赋予了?


雅典娜是否正在进行部分重复数据删除?- 更奇特的是,如果我COUNT(DISTINCT md5)在Athena中执行一次,我获得的计数与导出时返回的行数不同.

  • COUNT(DISTINCT md5) 在雅典娜:97,533,226
  • 出口不同MD5的记录:97,581,616
  • 结果导出中有14,790个重复项,因此COUNT(DISTINCT)计数都不好,结果导出错误.

雅典娜是否在出口上重复创作? - 情节变粗.如果我在Athena表中查询Athena结果导出中重复的MD5之一,我只从表中获得一个结果/行.我用一个LIKE查询测试了这个,以确保空格不会导致问题.这意味着Athena正在向导出添加重复项.结果中至少有两个相同的MD5.

select
  md5, …
Run Code Online (Sandbox Code Playgroud)

hive duplicates presto amazon-athena

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

使用Bash脚本并行化PHP进程?

我想从bash脚本启动~10个php进程.当其中一个完成时,我希望bash脚本启动另一个php进程,并且无限期地继续,总是运行~10个php进程.

最简单的方法是什么?

每次启动的php文件都是相同的,但php进程将知道从数据库中提取新值,因此每次都处理新数据.我需要启动的文件和它的所有类都已经用php编写了.

php parallel-processing bash

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

如何识别某个HTTPD进程正在处理哪个URL?

我的Web服务器偶尔会遇到HTTPD请求,这会导致CPU使用率上升.我在Top看这个.每次请求时都会动态生成每个URL.该框架是Codeigniter.我在Linux CentOS上使用prefork Apache作为我的Web服务器.

如何在CPU使用率达到峰值时找出正在处理的URL?我可以以某种方式将进程ID与Apache日志中的HTTP请求相关联吗?网站上有数百万个页面,因此查看Codeignitor的分析器并没有帮助.

apache cpu-usage

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

如何在使用Lighttpd和Fast-CGI时显示PHP错误?

我使用FastCGI运行Lighttpd网络服务器,网络服务器不输出PHP解析错误.

我的php.ini文件有以下设置:

error_reporting = E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
html_errors = On
Run Code Online (Sandbox Code Playgroud)

我在我的PHP脚本中启用错误输出以进行开发(对于其他环境具有冗余):

error_reporting( E_ALL );
ini_set( 'display_errors', 1 );
ini_set( 'html_errors', 'On' );
Run Code Online (Sandbox Code Playgroud)

大多数错误输出正常.解析错误没有.下面是抛出解析错误的示例代码.Lighttpd网络服务器不输出错误,但是从命令行执行时,因为它没有使用FastCGI.(注意缺少的连接运算符):

<?php echo 'foo' 'bar'; ?>
Run Code Online (Sandbox Code Playgroud)

我发现如果我display_errors = On在php.ini中设置然后使用FastCGI和Lighttpd正确解析错误输出,但是我不能在我的PHP脚本中使用它来关闭它们ini_set( 'display_errors', 0 ).

我希望能够在开发它时在我的应用程序中显示这些,并且能够在不更改php.ini配置的情况下关闭它们进行生产.使用FastCGI时,我的PHP应用程序中无法执行此操作吗?

php runtime-error fastcgi lighttpd syntax-error

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

公共和私人端点应该有单独的API吗?

如果一个网站有一个面向公众的前端消耗API,并且还有一个后端用于具有更强大角色且也消耗API的用户,那么该站点的两个部分应该使用相同的API或不同的API(例如:/ api/v1/resourceName vs/api/admin/resourceName)?

php api ajax rest laravel

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

如何在POINT类型的MySQL字段中输入"空"POINT()几何值?

我有一个带有POINT几何字段的表.我像这样输入纬度/经度点:

INSERT INTO table( point )
VALUES( POINT( lon_value, lat_value );
Run Code Online (Sandbox Code Playgroud)

有时候我没有输入lat/lon值.我无法输入空白,空值或空的POINT()...因为POINT(0,0)实际上是地球上的一个位置,这也不起作用.

这里有什么解决方案?

mysql geocoding point geolocation geospatial

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

如何使用Javascript或jQuery突出显示页面上所有单词的出现?

我有一个关键字列表,然后是一个包含页面上这些关键字的句子列表.我想让关键字列表可以点击.当用户点击关键字时,该关键字的所有匹配项都会在句子中突出显示.

我怎么能用jQuery或原始Javascript做到这一点?

我能想到的唯一方法是用一个包含自身作为类名的类来包装页面上的每个单词.然后创建关键字按钮,将高亮类添加到匹配的单词类中.这可能有效,但似乎有很多不必要的代码注入.

关键字列表

<button>this</button>
<button>example</button>
Run Code Online (Sandbox Code Playgroud)

句子

<span class='word_this'>This</span> <span class='word_is'>is</span> <span class='word_an'>an</span> <span class='word_example'>example</span>.
Run Code Online (Sandbox Code Playgroud)

javascript css jquery highlighting

6
推荐指数
2
解决办法
9797
查看次数

如何在MySQL UPDATE语句中模拟OFFSET?

我有一个MySQL数据库表,其中包含文章ID(主键)和文章标题.我想从表中删除重复的标题,但保留第一次出现的标题.我最初只是对所有重复的标题进行查询:

SELECT
    title,
    count( id ) AS count
FROM articles
GROUP BY title
HAVING count > 1
Run Code Online (Sandbox Code Playgroud)

然后我使用foreach循环和此命令将所有重复的标题替换为空白:

UPDATE articles
SET title = ''
WHERE title = '$duplicate_title'
Run Code Online (Sandbox Code Playgroud)

我想更新articles表并替换除第一个条目之外的所有重复标题,基于文章ID ASC使用类似的东西.问题是OFFSET似乎不能在UPDATE中工作.有没有办法在单个查询中执行此操作?

UPDATE articles
SET title = ''
WHERE title = '$duplicate_title'
ORDER BY id ASC
OFFSET 1
Run Code Online (Sandbox Code Playgroud)

mysql offset

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