小编cg.*_*cg.的帖子

有没有办法在JavaScript中检测下载的开始?

在我们当前的项目中,我们提供PDF下载,可以由用户通过他提交的HTML表单进行自定义.动态生成PDF需要几秒钟,我想将其可视化,例如通过禁用提交按钮直到下载开始.不幸的是,我找不到一种方法来检测下载何时开始*.所以我不知道何时重新启用提交按钮.

我已经尝试将IFrame指定为HTML表单的目标,希望onload触发该事件.但是,它不是 - 可能是因为PDF使用" Content-disposition: attachment"标头发送,并且实际上并未加载到IFrame中.

我现在能想到的唯一解决方案是将PDF生成到服务器上的临时文件,我想避免这种情况.

*)让我澄清一下:我不需要知道下载是否完成,或者即使它真的开始了.我想检测浏览器询问用户是打开还是保存文件的点.我猜这是在浏览器收到HTTP标头时发生的.

html javascript iframe download

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

如何使用SQL有效地确定行之间的更改

我有一个非常大的MySQL表,包含从许多传感器读取的数据.基本上,有一个时间戳和一个值列.我将省略传感器ID,在此处索引其他详细信息:

CREATE TABLE `data` (
  `time` datetime NOT NULL,
  `value` float NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

value列很少更改,我需要找到发生这些更改的时间点.假设每分钟都有一个值,以下查询将返回我需要的内容:

SELECT d.*, 
  (SELECT value FROM data WHERE time<d.time ORDER by time DESC limit 1) 
    AS previous_value 
FROM data d 
HAVING d.value<>previous_value OR previous_value IS NULL;

+---------------------+-------+----------------+
| time                | value | previous_value |
+---------------------+-------+----------------+
| 2011-05-23 16:05:00 |     1 |           NULL |
| 2011-05-23 16:09:00 |     2 |              1 |
| 2011-05-23 16:11:00 |   2.5 |              2 |
+---------------------+-------+----------------+
Run Code Online (Sandbox Code Playgroud)

唯一的问题是这是非常低效的,主要是由于依赖子查询.使用MySQL 5.1提供的工具优化它的最佳方法是什么?

最后一个约束是在将值插入数据表之前不对它们进行排序,并且它们可能在以后更新.这可能会影响任何可能的去规范化策略.

mysql sql optimization query-optimization

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

如何正确获取Symfony 3中的EntityManager?

我正在使用当前版本的Symfony(3.2.3)和Doctrine ORM(2.5.6),我仍然试图正确地处理如何正确处理弃用getEntityManager()和相关方法.

例如,当前文档指出这是创建查询构建器实例的方法:

$repository = $this->getDoctrine()->getRepository('AppBundle:Product');
$queryBuilder = $repository->createQueryBuilder('p')
Run Code Online (Sandbox Code Playgroud)

但是我看到它(以及我的IDE似乎同意)的方式getRepository()是类型提示返回一个实例,ObjectRepository并且该方法createQueryBuilder()未在该接口中声明,而是在实现类中EntityRepository.

另一个例子是在控制器中显式启动事务:

$this->getDoctrine()->getEntityManager()->getConnection()->beginTransaction()
Run Code Online (Sandbox Code Playgroud)

我应该调用getManager()而不是getEntityManager()因为后一种方法已被弃用.但是getManager()类型暗示返回一个ObjectManager未声明的实例getConnection().

PHP是PHP的代码似乎仍然适用于所有情况,但我的IDE和我留下了一种不安的感觉.那么,在Symfony 3中创建查询构建器或开始事务的正确方法是什么?我错过了什么吗?

php symfony doctrine-orm

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