在我们当前的项目中,我们提供PDF下载,可以由用户通过他提交的HTML表单进行自定义.动态生成PDF需要几秒钟,我想将其可视化,例如通过禁用提交按钮直到下载开始.不幸的是,我找不到一种方法来检测下载何时开始*.所以我不知道何时重新启用提交按钮.
我已经尝试将IFrame指定为HTML表单的目标,希望onload
触发该事件.但是,它不是 - 可能是因为PDF使用" Content-disposition: attachment
"标头发送,并且实际上并未加载到IFrame中.
我现在能想到的唯一解决方案是将PDF生成到服务器上的临时文件,我想避免这种情况.
*)让我澄清一下:我不需要知道下载是否完成,或者即使它真的开始了.我想检测浏览器询问用户是打开还是保存文件的点.我猜这是在浏览器收到HTTP标头时发生的.
我有一个非常大的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提供的工具优化它的最佳方法是什么?
最后一个约束是在将值插入数据表之前不对它们进行排序,并且它们可能在以后更新.这可能会影响任何可能的去规范化策略.
我正在使用当前版本的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中创建查询构建器或开始事务的正确方法是什么?我错过了什么吗?
doctrine-orm ×1
download ×1
html ×1
iframe ×1
javascript ×1
mysql ×1
optimization ×1
php ×1
sql ×1
symfony ×1