我有表单集合,需要处理超过500个实体实例.在我将超时增加到60秒并且增加了max_input_vars形式工作之后,但是它的速度有多慢.渲染形式很慢,但提交这个大形式是痛苦的屁股.
我正在考虑创建纯HTML格式,但还有其他一些缺点作为验证.那么,是否有任何正确的方法通过symfony形式处理大量数据?
控制器:
public function ratesCardAction() {
$bannerList = $this->data;
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(new AdvertiserRatesType($bannerList));
if ('POST' == $this->getRequest()->getMethod()) {
$form->handleRequest($this->getRequest());
$advertiserCampaign = $form->getData();
if ($form->isValid()) {
foreach ($advertiserCampaign['campaignsAdZones'] as $campaignAdZone) {
$em->persist($campaignAdZone);
}
$em->flush();
}
}
return array(
'form' => $form->createView()
);
}
class AdvertiserRatesType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder ->add('campaignsAdZones', 'collection', array(
'type' => new AdvertiserRatePerCountryType(),
'data' => $this->rates,
'empty_data' => null,
'options' => array(
'attr' => array('class' => 'campaignAdZoneItem') …Run Code Online (Sandbox Code Playgroud) 如何在PHP函数中获取当前的递归级别?我的意思是,有这样的"神奇"(或最终正常)功能:
function doSomething($things) {
if (is_array($things)) {
foreach ($things as $thing) {
doSomething($thing);
}
} else {
// This is what I want :
echo current_recursion_level();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用另一个函数参数($level在本例中):
function doSomething($things, $level = 0) {
if (is_array($things)) {
foreach ($things as $thing) {
$level++;
doSomething($thing, $level);
}
} else {
echo $level;
}
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有内置函数(或技巧)来做到这一点.也许有些东西debug_backtrace(),但它似乎不是一个简单或快速的解决方案.
我没有找到这个信息,也许它根本就不存在......
我正在将PHP与OPcache一起使用。我只是git-push掌握将我的网站部署到生产环境中(不是真的,它只是在单元测试之后,但是没关系)。在php.ini文件中,OPcache设置与“时间”和“频率”有关。但是我只想在git pull我的服务器后重置缓存。
所以我想我只需要opcache_reset在生产服务器上进行git-pull之后调用并将其设置opcache.validate_timestamps为0(从不重置缓存)
我没有阅读过有关该方法的任何内容,因此我对此表示怀疑:我不知道这是否是一个好习惯。我错过了什么?有没有风险或可以吗?
非常感谢!
PS:我使用的是PHP框架和作曲器(composer install在git-pull之后运行)
我没有找到关于如何在Lumen 5.2中设置默认时区的任何相关信息(仅限技巧).有没有干净的方法来做到这一点?
我尝试使用Hyper将URL的内容(正文)显示为文本
extern crate hyper;
use hyper::client::Client;
use std::io::Read;
fn main () {
let client = Client::new();
let mut s = String::new();
let res = client.get("https://www.reddit.com/r/programming/.rss")
.send()
.unwrap()
.read_to_string(&mut s)
.unwrap();
println!("Result: {}", res);
}
Run Code Online (Sandbox Code Playgroud)
但是运行此脚本只会返回正文的大小:
Result: 22871
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我误解了什么吗?
这不是一个真实世界的例子,我过度简化了它.给这个数组:
const a = [1,2,3,4,5,6,7,8,4,5]; // Etc. Random numbers after.
Run Code Online (Sandbox Code Playgroud)
我想过滤它只有那些匹配一个模式(比如说这个简单的例子大于3),直到第一次追加(比方说元素大于7)
所以对于这个例子,我只想要:[4,5,6,7].但是filter,我会有尾随4和5:
const a = [1,2,3,4,5,6,7,8,4,5].filter((v) => v > 3)
// returns: [4, 5, 6, 7, 8, 4, 5]
Run Code Online (Sandbox Code Playgroud)
所以我想从一个数组中获取项目并在一个条件后最终停止.如何在第一次不满足条件后过滤然后停止?(没有for循环,我想保持它"功能性")
const a = [1,2,3,4,5,6,7,8,4,5,1,2,976,-1].awsome_function();
// returns: [4, 5, 6, 7, 8] because it stopped after the first 8.
Run Code Online (Sandbox Code Playgroud) 阅读Zopim(又名Zendesk Chat)的文档:
必须在实时聊天脚本之后插入API调用并将其包装在$ zopim(function(){...})中
所以我在headHTML的一部分中有一个Zopim脚本:
<script>/*<![CDATA[*/window.zEmbed||function(e,t){ ... }("https://...);
/*]]>*/</script>
Run Code Online (Sandbox Code Playgroud)
然后我在HTML文档的末尾添加了这个:
$zopim(function() {
$zopim.livechat.setName('Logged in name');
$zopim.livechat.setEmail('user@somewhere.com');
});
Run Code Online (Sandbox Code Playgroud)
控制台说:
$ zopim未定义
我想我已正确遵循了说明.我错过了什么?
哪里是公众对nextjs项目文件夹?
我的意思是,是否有地方在那里我可以把favicon.png谷歌网站验证manifest.json,robots.txt等等?
我正在使用这个表(MySQL/Engine:MyISAM):
CREATE TABLE `activities` (
`id_activity` int(10) unsigned NOT NULL AUTO_INCREMENT,
`id_doc` int(10) unsigned NOT NULL DEFAULT '0',
`node_id` tinytext NOT NULL,
`title` tinytext NOT NULL,
`name` tinytext NOT NULL,
`keywords` tinytext NOT NULL,
`page_type` tinytext NOT NULL,
`page_screen_id` tinytext NOT NULL,
`page_screen_question` tinytext NOT NULL,
PRIMARY KEY (`id_activity`),
KEY `name` (`name`(255)),
FULLTEXT KEY `node_id` (`node_id`,`title`,`name`,`keywords`,`page_type`,`page_screen_id`,`page_screen_question`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
(大约有100000行)
这是我的查询:
EXPLAIN SELECT 1
FROM `activities`
GROUP BY `node_id`, `title`, `name`, `keywords`, `page_type`, `page_screen_id`, `page_screen_question`;
Run Code Online (Sandbox Code Playgroud)
我正在使用默认通知系统(Laravel 5.3)发送电子邮件.我想在消息中添加HTML标记.这不起作用(它以纯文本显示强标签):
public function toMail($notifiable)
{
return (new MailMessage)
->subject('Info')
->line("Hello <strong>World</strong>")
->action('Voir le reporting', config('app.url'));
}
Run Code Online (Sandbox Code Playgroud)
我知道这是正常的,因为文本显示在{{ $text }}邮件通知模板中.我尝试使用与csrf_field()帮助器相同的系统:
->line( new \Illuminate\Support\HtmlString('Hello <strong>World</strong>') )
Run Code Online (Sandbox Code Playgroud)
但它不起作用:它显示为纯文本.
我可以在不更改视图的情况下发送HTML标记吗?(我不想更改视图:保护文本适用于所有其他情况).希望它足够清楚,如果不是抱歉.
php ×5
javascript ×2
laravel ×2
optimization ×2
bulk ×1
bulkinsert ×1
composer-php ×1
forms ×1
git ×1
hyper ×1
laravel-5.3 ×1
lumen ×1
lumen-5.2 ×1
mysql ×1
next.js ×1
opcache ×1
reactjs ×1
recursion ×1
rust ×1
symfony ×1
zendesk ×1
zopim ×1